저는 Perl 초보자이며 "시스템"호출을 사용하는 데 약간의 문제가 있습니다.왜 Perl 시스템 호출이 점으로 실패합니까?
# First command is :
# dot -Tpng $dottmpfile > $pngfile
# Second command is :
# rm $dottmpfile
if (!($pngfile eq "")) {
my @args = ("dot", "-Tpng", $dottmpfile, " > ", $pngfile);
system (join (' ' , @args))
or die "system @args failed : $!";
unlink $dottmpfile;
}
편집 : 저는 여기에 2 개 쉘 명령을 실행하려고 코드의 작은 조각 여기 내 코드는 지금, 그리고 난 여전히 오류 얻을 : 나는 system을 사용했습니다
system dot -Tpng toto.dot > toto.png failed : Inappropriate ioctl for device at /home/claferri/bin/fractal.pl line 79.
을 이 코드를 생성합니다.
을 빨리, 전체 줄을 하나의 문자열로 병합하고 주위에 역 따옴표를 넣으십시오. 즉 $ result = \'dot -Tpng $ dottmpfile> $ pngfile \'; –
여기를 참조하십시오 : http://stackoverflow.com/questions/2461472/how-can-i-run-an-external-command-and-capture-its-output-in-perl/2461664#2461664. 또한 파일을 지우려면'unlink()'를 사용하십시오.'rm '시스템을 호출 할 필요가 없음 – ghostdog74
$! $보다는 오히려? - 오류 코드가 아닌 오류 메시지를 제공하며, 이는 거의 항상 잘못된 정보를 알려줍니다. –