簡體   English   中英

在perl中將數據打印為hexdump

[英]printing data as hexdump in perl

我試圖在perl中將數據打印為hexdump,但看起來它只在我使用十六進制轉儲值“硬編碼”變量時才起作用。 在下面的代碼中,hexdump打印第一種情況,但對於第二種情況($ 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會在文件句柄輸入中出現每個斜杠附加一個額外的反斜杠。 如何將文件句柄數據打印為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,因為這些只是用來幫助使其人類可讀。然后將其打包為十六進制字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM