С помощью Strawberry perl v5.28.1 в Windows 10 я пытаюсь добиться того же результата, что и в Linux, а именно получить кодированный в UTF8 файл с окончаниями строк Unix .
Вот мой Perl-скрипт:
#!perl -w
use strict;
use utf8;
use Encode qw(encode_utf8);
use Digest::MD5 qw(md5_hex);
binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");
my %words;
while(<>) {
# change yo to ye
tr/ёЁ/еЕ/;
# extract russian word and its optional explanation
next unless /^([А-Я]{2,})\|?([А-Я ,-]*)/i;
my ($word, $expl) = (uc $1, $2);
if (length($word) <= 3) {
print $word;
# if explanation is missing, omit the pipe
print (length($expl) > 3 ? "|$expl\x0A" : "\x0A");
} else {
# print the md5 hash and omit the pipe and explanation
print md5_hex(encode_utf8('my secret' . $word)) . "\x0A";
}
}
Вот мой входной файл:
ААК|Плоскодонное речное судно
ААРОНОВЕЦ|
ААРОНОВЩИНА|
ААТ|Драгоценный красный камень в Японии
АБА|Толстое и редкое белое сукно
АБАЖУР|
АБАЖУРОДЕРЖАТЕЛЬ|
АБАЗ|Грузинская серебряная монета
АБАЗА|
Вот как я его запускаю (я использую type
вместо <
, потому что у меня много входных файлов в моем реальном случае использования):
type input.txt | perl encode-words-ru.pl > output.txt
Независимо от того, что я пробую в приведенном выше исходном коде Perl, строки в output.txt заканчиваются на \ x0D \ x0A
Пожалуйста, помогите мне не дать Perl "помогать" мне!