我正在努力实现使用perl
对两个目录中的文件执行按位比较的脚本 (目录名称作为参数传递给命令行中的脚本)。 该脚本应该读取第一个目录和所有子目录中的所有文件,以及 将它们与相应的文件(例如,具有相同名称的文件)进行比较 第二个目录。
脚本的结果 - (PASSED或FAILED)根据以下内容形成: 当第一个目录中的至少一个文件不是按位时,结果为FAILED 等于第二个目录或第二个目录中的相应文件 没有相应的文件。 否则测试通过。
到目前为止,我已经在我创建的这个主题中尝试了这种方法 - Comparing two directories using Perl。经过一段时间后,我意识到我基本上试图模拟“diff -r dir1 dir2”这不是目标,如何在两个目录上执行按位比较操作?
EDIT: Test Case
/dir1 /dir2
-- file1 -- file1
-- file2 -- file2
-- file3
-- ....
-- ...
---/subDir1
--file1
--file2
file1 of dir1 contains :- foo bar
file1 of dir2 contains :- foo
Result - Fail
file1 of dir1 contains :- foo bar
file1 of dir2 contains :- foo bar
Result - Pass.
该脚本本质上应该提取具有相同名称的文件存在于不同的目录中。
答案 0 :(得分:1)
我会做这样的事情:
Digest :: MD5的代码示例......
use Digest::MD5 qw(md5 md5_hex md5_base64);
$digest = md5($data);
$digest = md5_hex($data);
$digest = md5_base64($data);
# OO style
use Digest::MD5;
$ctx = Digest::MD5->new;
$ctx->add($data);
$ctx->addfile(*FILE);
$digest = $ctx->digest;
$digest = $ctx->hexdigest;
$digest = $ctx->b64digest;
为每个文件生成MD5哈希值并进行比较,然后相应地传递或失败。