使用perl语言,对当前文件夹下的p0.png p1.png p2.png进行cksum校验,并依次将校验结果输出到CRC文件中,读取CRC文件中每一行第一个字符串并存到队列中,之后比较队列的值
时间: 2024-04-04 12:30:05 浏览: 97
你可以使用以下 Perl 代码来完成你的需求:
```perl
use strict;
use warnings;
# 获取当前文件夹下所有以 ".png" 结尾的文件
my @files = glob "*.png";
# 打开 CRC 文件用于写入校验结果
open my $crc_fh, '>', 'CRC.txt' or die "无法打开 CRC 文件: $!";
# 遍历每个文件,计算校验和并写入 CRC 文件
foreach my $file (@files) {
# 使用 cksum 命令计算校验和
my $cksum_output = `cksum $file`;
# 提取校验和结果
my ($checksum, $size, $filename) = split /\s+/, $cksum_output;
# 将校验结果写入 CRC 文件
print $crc_fh "$checksum\n";
}
# 关闭 CRC 文件
close $crc_fh;
# 读取 CRC 文件中的每一行并存储到队列中
my @queue;
open $crc_fh, '<', 'CRC.txt' or die "无法打开 CRC 文件: $!";
while (my $line = <$crc_fh>) {
chomp $line;
push @queue, $line;
}
close $crc_fh;
# 比较队列中的值
if (scalar @queue > 1) {
my $first_value = shift @queue;
my $same_values = 1;
foreach my $value (@queue) {
if ($value ne $first_value) {
$same_values = 0;
last;
}
}
if ($same_values) {
print "队列中的所有值相同\n";
} else {
print "队列中的值不全相同\n";
}
} else {
print "队列中的值不足两个\n";
}
```
这段代码首先获取当前文件夹下所有以 ".png" 结尾的文件,然后使用 `cksum` 命令计算每个文件的校验和,并将校验结果依次写入到名为 "CRC.txt" 的文件中。接着,读取 "CRC.txt" 文件中的每一行并存储到队列中。最后,比较队列中的值,如果所有值相同,则输出 "队列中的所有值相同";否则,输出 "队列中的值不全相同"。
阅读全文