2014-10-20 3 views
0

펄 스크립트는 설정 파일에서 url을 읽습니다. 구성 파일 데이터에 URL = http://example.com으로 저장됩니다. 사이트 이름 만 얻으려면 어떻게해야합니까? 시도했습니다.펄 스크립트에서 쉘을 호출하는 방법

open(my $fh, "cut -d= -f2 'webreader.conf'"); 

하지만 작동하지 않습니다.

제발, 도와주세요!

+3

셸 명령을 파일 경로로 전달 중입니다 ... – m0skit0

+2

개인적으로 'do not'라고 말하고 싶습니다. perl 내에서''컷 (cut) ''과 같은 것을 시도 할 많은 이유가 없습니다. – Sobrique

답변

5

당신은

open(my $fh, "<", "webreader.conf") or die $!; 
while (<$fh>) { 
    chomp; 
    my @F = split /=/; 
    print @F > 1 ? "$F[1]\n" : "$_\n"; 
} 
+0

고마워요! 그것은 작동합니다! – ayunt

0

,

open(my $fh, "-|", "cut -d= -f2 'webreader.conf'") or die $!; 

print <$fh>; # print output from command 

더 나은 접근 방식은 펄 직접 파일을 읽을 것, 독서 파이프 무엇 다음 것은 포크 도착 명령임을 -|로 표시하기 위해이 같은 아마 뭔가를 ?

$ cat urls.txt 
URL=http://example.com 
URL=http://example2.com 
URL=http://exampleXXX.com 

$ ./urls.pl 
http://example.com 
http://example2.com 
http://exampleXXX.com 

$ cat urls.pl 
#!/usr/bin/perl 

$file='urls.txt'; 
open(X, $file) or die("Could not open file."); 

while (<X>) { 
    chomp; 
    s/URL=//g; 
    print "$_\n"; 
} 
close (X); 
+2

파일 열기에 실패하면 죽을 때'$! '를보고하지 않습니다. 3 개의 인자를 열지 않으면 [perldoc open] (http://perldoc.perl.org/functions/open.html)을 참조하십시오. '엄격한 사용; ' –

+1

@ Dr.Avalanche에서 언급 한 문제 외에도 어휘 파일 핸들을 사용해야합니다. – dgw

관련 문제