Perl逐行读取文件输出SHA256

时间:2019-12-16 04:57:56

标签: perl hash sha256 sha sha2

我试图逐行读取文本文件,然后在终端中打印出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的新手,如果这很傻,请原谅。

谢谢。

1 个答案:

答案 0 :(得分:3)

如果使用<$fh>从文件中读取一行,则输入中的行尾将包含在结果中。因此,您要做的是哈希test\n而不是test

use Digest::SHA 'sha256_hex'; 
print sha256_hex("test\n"),"\n"; # f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
print sha256_hex("test"),"\n";   # 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08