if 조건을 사용하여 Perl에서 2개의 파일이 비어 있는지 확인하는 방법

if 조건을 사용하여 Perl에서 2개의 파일이 비어 있는지 확인하는 방법
if(-z "$file1" && "file2") {
  print "file1 and file2 are empty";
} else {
 print "execute";
}

이것을 작성하면 파일이 비어있을 때 인쇄되고 execute파일이 비어 있지 않을 때 인쇄됩니다 file1 and file2 are empty.

조건이 참일 때 인쇄되어야 합니다. file1 and file2 are empty맞나요? 아직도 틀렸나요?

답변1

-z및 이 누락되었습니다 $. -z "$file2"또한 파일 이름을 인용할 필요가 없습니다(그러나 이로 인해 오류가 발생하지는 않습니다). Perl 한 줄짜리 예제를 사용하여 다음 테스트를 실행하세요.


rm -rf foo bar
touch foo
perl -le 'my $file1 = "foo"; my $file2 = "bar"; if ( -z $file1 && -z $file2 ) { print "file1 and file2 are empty"; } else { print "execute"; }'
# File 'bar' does not exist, so -z $file2 evaluates to false:
# execute

rm -rf foo bar
touch foo bar
perl -le 'my $file1 = "foo"; my $file2 = "bar"; if ( -z $file1 && -z $file2 ) { print "file1 and file2 are empty"; } else { print "execute"; }'
# Both files exist and are zero size, so both '-z' tests evaluate to true:
# file1 and file2 are empty

rm -rf foo bar
touch foo bar
echo '1' > bar
perl -le 'my $file1 = "foo"; my $file2 = "bar"; if ( -z $file1 && -z $file2 ) { print "file1 and file2 are empty"; } else { print "execute"; }'
# File 'bar' iz non-zero size, so -z $file2 evaluates to false:
# execute

답변2

-z귀하의 명세서에 하나가 누락되어 있습니다 if.

if ( -z "$file1" && -z "$file2" ) {
    print "file1 and file2 are empty";
}
else {
    print "execute";
}

관련 정보