답변:
-p 스위치는 이 루프 코드 (인수 다음 -e)을 포장 단지 바로 가기입니다 :
LINE:
while (<>) {
... # your program goes here
} continue {
print or die "-p destination: $!\n";
}
(-n은 동일하지만 continue 블록이 없습니다.)
<>
빈 연산자는 동등 readline *ARGV
하고, 즉, 읽을 수있는 파일로 연속적으로 각 인자를 연다. 암시 적 열기의 오류 처리에 영향을 줄 수있는 방법은 없지만 치명적인 경고를 만들 수 있습니다 (이는 -i 스위치와 관련된 여러 가지 경고에도 영향을 미칩니다).
perl -Mwarnings=FATAL,inplace -pe 1 foo && echo ok
inplace
. 카테고리입니다. 그것없이 -Mwarnings=FATAL
수단 FATAL => all
, 어떤 우리는 원하지 않는다. 알았다.
루프 본문에 플래그를 설정하고 oneliner 끝의 END 블록에서 플래그를 확인하십시오.
perl -pe '$found = 1; ... ;END {die "No file found" unless $found}' -- file1 file2
파일이 처리되지 않은 경우에만 실패합니다.
모든 파일을 찾을 수 없을 때 문제를보고하려면 다음과 같은 것을 사용할 수 있습니다.
perl -pe 'BEGIN{ $files = @ARGV} $found++ if eof; ... ;END {die "Some files not found" unless $files == $found}'
BEGIN{die "File not found" unless -f $ARGV[0]}
. (플래그를 설정하고 코드 2 개를 추가하지 않기 때문에 더 밝게 말합니다)