来自arg输入的perl print hex ascii

时间:2016-02-27 16:28:59

标签: bash perl escaping hex ascii

我将一些hex ascii用于perl,并希望使用它的打印功能将这些东西打印到文件中。但十六进制不打印为ascii,而是打印为普通字符串

echo "\x48\x32\x35\x45" "\x90\xc1\xe2\x7a" | perl -e' @string =  split " ",<>; print ${string[0]},chr(0),"$string[1]";' > input.txt 

然而,这在input.txt

中给出了以下内容
\x48\x32\x35\x45^@\x90\xc1\xe2\x7a

它应该更像是

H25E^@<90><C1><E2>z

1 个答案:

答案 0 :(得分:0)

你需要eval s(以及额外的双引号)来使perl“解释”十六进制转义:

echo "\x48\x32\x35\x45 \x90\xc1\xe2\x7a" | perl -e '@string = split " ",<>; print eval "\"$string[0]\"",chr(0),eval "\"$string[1]\"";'