我试图逐行读取文本文件,然后在终端中打印出SHA256值。
#!/usr/bin/perl
use strict;
use warnings;
...
use Digest::SHA qw(sha256_hex);
while ( my $line = <$fh> ) {
print $line;
print sha256_hex($line), "\n";
print "Next", "\n";
}
close $fh;
示例输出:
test
f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
Next
当我尝试使用sha256_hex('test');
而不是sha256_hex($line);
时,哈希值为9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
。
我做错了什么?我是perl的新手,如果这很傻,请原谅。
谢谢。
答案 0 :(得分:3)
如果使用<$fh>
从文件中读取一行,则输入中的行尾将包含在结果中。因此,您要做的是哈希test\n
而不是test
:
use Digest::SHA 'sha256_hex';
print sha256_hex("test\n"),"\n"; # f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
print sha256_hex("test"),"\n"; # 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08