作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用这样的 perl 脚本将输入提供给 C 程序
./cprogram $(perl -e 'print "\xab\xcd\xef";')
.
但是,必须从文件中读取字符串。所以我得到这样的东西:./cprogram $(perl -e 'open FILE, "<myfile.txt"; $file_contents = do { local $/; <FILE> }; print $file_contents'
.但是,现在 perl 将字符串解释为字符串 "\xab\xcd\xef"
,并且我希望它像第一个示例一样将其解释为字节序列。
如何做到这一点?它必须在没有 File::Slurp 的服务器上运行。
最佳答案
在第一种情况下,您传递三个字节 AB CD EF
(由字符串文字 "\xAB\xCD\xEF"
产生)到 print
.
在第二种情况下,您必须将这三个字节以外的其他内容传递给 print
.我怀疑您正在传递十二个字符的字符串 \xAB\xCD\xEF
至 print
.
所以你的问题变成了:如何转换十二个字符的字符串\xAB\xCD\xEF
进入三个字节 AB CD EF
.好吧,您需要某种解析器,例如
s/\\x([0-9a-fA-F][0-9a-fA-F])|\\([^x])|([^\\]+)/
$1 ? chr(hex($1)) : $2 ? $2 : $3
/eg
$ perl -e'print "\\xAB\\xCD\\xEF";' >file
$ echo -n "$( perl -0777pe'
s{\\x([0-9a-fA-F][0-9a-fA-F])|\\([^x])|([^\\]+)}{
$1 ? chr(hex($1)) : $2 // $3
}eg;
' file )" | od -t x1
0000000 ab cd ef
0000003
关于perl - 如何让 perl 解释表示地址的字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13871573/
我是一名优秀的程序员,十分优秀!