我想在perl中以十六进制转储的形式打印数据,但是似乎只有在将变量硬编码为十六进制转储值时才有效。在下面的代码中,第一个案例可以打印出十六进制转储,但是对于第二个案例($var2),它只打印从文件句柄读取的数据。
#!/usr/bin/perl
use Data::Dumper;
$var = "\xE9\x92\x97\xAF\xE9\x92\x97\xB5";
print "the first dumper is\n";
print Dumper($var);
my $filename = 'c.txt';
open($fh, "<", $filename);
{
local $/;
$var2 = <$fh>;
chop($var2);
}
close($fh);
$var5 = $var2;
print "the second dumper is\n";
print Dumper($var5);
以上代码的输出结果是:
[root@abc]# perl code.pl
第一个转储程序是
$VAR1 = 'é’—¯é’—µ';
第二个转储程序是:
$VAR1 = '"\\xE9\\x92\\x97\\xAF\\xE9\\x92\\x97\\xB5"';
看起来perl在文件句柄输入中每个斜杠都附加了一个额外的反斜杠。我该如何将文件句柄数据打印为十六进制转储?c.txt文件的内容如下:
[root@abc]# cat c.txt
"\xE9\x92\x97\xAF\xE9\x92\x97\xB5"