我试图在两个目录中遍历并比较每个文件并找出它们之间的差异我使用保存文件名和使用perl哈希数据的find命令显然是在使用SunS 5.10,下面的代码可以工作Linux操作系统
失败的代码片段
use strict;
use warnings;
use File::Find;
my (%files1, %files2);
my ($dir1, $dir2) = @ARGV;
find( sub { -f && $files1{$_} = $File::Find::name }, $dir1);
find( sub { -f && $files2{$_} = $File::Find::name }, $dir2);
错误
perl -c test_compare.pl
Can't modify logical and (&&) in scalar assignment at test_compare.pl line 9, near "$File::Find::name }"
test_compare.pl had compilation errors.
这是因为operator precedence,你可以使用and
而不是&&
:
find( sub { -f and $files1{$_} = $File::Find::name }, $dir1);