如何将双反斜杠PERLQQ转义字符串解码为Perl字符?

Jua*_*cek 3 perl utf8-decode

我从包含半utf8编码的文件中读取行,并且我希望将其转换为Perl内部表示以进行进一步操作.

file.in(纯ASCII):

MO\\xc5\\xbdN\\xc3\\x81
NOV\\xc3\\x81
Run Code Online (Sandbox Code Playgroud)

这些应转换为MOŽNÁ和NOVÁ.

我加载行并将它们升级到正确的utf8表示法,即.\\xc5\\xbd -> \x{00c5}\x{00bd}.然后我想升级$line并使perl在内部表示它:

for my $line (@lines) {
    $line =~ s/x(..)/x{00$1}/g;
    eval { $l = "$line"; };
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有成功.

dax*_*xim 5

use File::Slurp qw(read_file);
use Encode qw(decode);
use Encode::Escape qw();

my $string =
    decode 'UTF-8',             # octets ? characters
    decode 'unicode-escape',    # \x ? octets
    decode 'ascii-escape',      # \\x ? \x
    read_file 'file.in';
Run Code Online (Sandbox Code Playgroud)

从下往上阅读.