上QQ阅读APP看书,第一时间看更新
2.1 识别文件或目录
文件在Perl程序中的表示与在操作系统中的一样,类似“/home/joy/a.txt”“../b.txt”和“c.txt”等这样的字符串。文件名之前可以有绝对路径或者相对路径,如果没有路径,则默认是当前(运行Perl程序的)路径。
在处理文件之前,我们需要先识别文件。Perl提供了一些文件(包括目录)测试操作符,它们中的大部分会返回“真”或“假”。例如:
my $to_check = "/tmp/a"; if ( -e $to_check ) { print "file or directory $to_check exists.\n"; } else { print "file or directory $to_check does not exist.\n"; }
-e测试操作符的含义是:如果文件或目录是存在的,那么该测试返回“真”,否则返回“假”。
常用的文件测试操作符,如表2-1所示。
表2-1 文件测试操作符
请注意,-f返回真时,测试对象可能是普通文件,也可能是指向其他文件的符号链接。如果想要确保被测试的对象只是普通文件,而不是符号链接,则需要使用:
if ( -f $file and ! -l $file ) { print "$file is file, not link\n"; }
还有一个常用的测试操作符-s。如果被测对象是普通文件,它会返回文件的大小,以字节(byte)为单位。这常用于我们挑选某类大小的文件,或者累计文件的大小。
if ( -s $file > 500,000,000 ) { print "$file is larger than 500M\n"; }