Perl читает файл построчно, выводит SHA256

Я пытаюсь прочитать текстовый файл построчно, а затем распечатать значение 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, так что извините, если что-то глупо.

Спасибо.


person Perez    schedule 16.12.2019    source источник


Ответы (1)


Если вы читаете строку из файла с помощью <$fh>, конец строки из ввода включается в результат. Таким образом, вы сделали хеширование test\n вместо test:

use Digest::SHA 'sha256_hex'; 
print sha256_hex("test\n"),"\n"; # f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
print sha256_hex("test"),"\n";   # 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
person Steffen Ullrich    schedule 16.12.2019
comment
Спасибо! chomp $line; перед печатью хеш SHA256 решает эту проблему. - person Perez; 16.12.2019