목록PERL (46)
준호씨의 블로그
perl 에서는 기본함수로 trim 함수를 제공하고 있지 않아서 좀 아쉽습니다. 정규 표현식을 이용하여 만든 trim, ltrim, rtrim 함수 입니다. sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s; }; sub ltrim { my $s = shift; $s =~ s/^\s+//; return $s; }; sub rtrim { my $s = shift; $s =~ s/\s+$//; return $s; }; 다음은 사용예제 입니다. my $some_str = " hello world "; print "===$some_str===\n"; # === hello world === my $trimmed_str = trim($some_str); prin..
2018.01.15 삽질 했던 것 정리. 문제가 해결은 된 상태라 해결 된 것 까지 정리. 정확한 이유 확인은 못함. cpan 으로 MIME::Lite 라는 모듈을 설치 했는데 로컬에서는 잘 되는데 apache 통해서 perl cgi 를 호출하면 MIME::Lite 모듈이 없어서 오류가 나는 상황 설치된 perl 환경 참고로 OSX 기본 perl 버전은 5.18 /usr/bin/perl perlbrew 로 세팅한 perl 이 5.18.2, 5.26.1 perlbrew perl 에서 cpan MIME::Lite 로 설치 하면 로컬에서는 잘 됨 스크립트의 shebang 은 다음과 같이 되어 있음. #!/usr/bin/env perl 추측하기로는 apache 에서 호출한 perl cgi 는 perlbrew 로..
특정한 도메인으로 이메일을 보낼 때, 해당 도메인의 MX 레코드를 구하고 MX 레코드에 있는 도메인으로 메일을 보내게 된다. (MX 레코드가 없다면 기본 도메인 그대로 이용) perl 언어에서 Net::DNS 모듈을 이용해서 구하는 방법을 알아 본다. mx 메서드를 이용하면 쉽게 구할 수 있다. resolver 의 query 메서드를 이용해서도 구할 수 있다. #!/usr/bin/perl use strict; use warnings FATAL => 'all'; use Net::DNS; use Data::Dumper; my $res = Net::DNS::Resolver->new; my $domain = "daum.net"; # mx 메서드 이용 방법 my @mxs = mx($res, $dom..
push 함수를 이용하면 간단히 배열을 합칠 수 있다. my @array1 = (1,2); my @array2 = (3,4); my @array3 = (); push(@array3, @array1); push(@array3, @array2); print "@array3\n"; # 1 2 3 4 이렇게 해도 같음. 그런데 push 가 좀 더 효과적이고 한다. my @array4 = (@array1, @array2); print "@array4\\n"; # 1 2 3 4 참고 https://docstore.mik.ua/orelly/perl3/cookbook/ch04_10.htm
라인수가 많지 않으면 cat 결과를 array 에 넣어서 읽으면 됩니다. my @lines = `cat file.txt`; for my $line (@lines) { print $line; } 라인수가 많으면 file open 을 이용합니다. #!/usr/bin/env perl use strict; use warnings; my $file = "file.txt"; open my $info, $file or die "Could not open $file: $!"; while (my $line = ) { print $line; } close $info;