在 perl 中将数据打印为 hexdump
printing data as hexdump in perl
我正在尝试在 perl 中将数据打印为十六进制转储,但看起来它只在我 "hard coding" 具有十六进制转储值的变量时有效。在下面的代码中,hexdump 是针对第一种情况打印的,但对于第二种情况($var2),它只打印从文件 handle
中读取的数据
#!/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 正在为文件句柄输入中的每个斜杠附加一个额外的反斜杠。如何将文件句柄数据打印为 hexdump? c.txt 文件的内容是
[root@abc]# cat c.txt
"\xE9\x92\x97\xAF\xE9\x92\x97\xB5"
好吧,你可以做到这一点
#!/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;
$var5 =~ s/"|\x//g;
print "the second dumper is\n";
print Dumper(pack("H*",$var5));
我正在使用搜索和替换来删除所有 " 字符和 \x,因为这些只是用来帮助使其易于阅读的废话。然后将其打包为十六进制字符串。
我正在尝试在 perl 中将数据打印为十六进制转储,但看起来它只在我 "hard coding" 具有十六进制转储值的变量时有效。在下面的代码中,hexdump 是针对第一种情况打印的,但对于第二种情况($var2),它只打印从文件 handle
中读取的数据#!/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 正在为文件句柄输入中的每个斜杠附加一个额外的反斜杠。如何将文件句柄数据打印为 hexdump? c.txt 文件的内容是
[root@abc]# cat c.txt
"\xE9\x92\x97\xAF\xE9\x92\x97\xB5"
好吧,你可以做到这一点
#!/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;
$var5 =~ s/"|\x//g;
print "the second dumper is\n";
print Dumper(pack("H*",$var5));
我正在使用搜索和替换来删除所有 " 字符和 \x,因为这些只是用来帮助使其易于阅读的废话。然后将其打包为十六进制字符串。