【问题标题】:Perl pack, unpack and STDINPerl 打包、解包和标准输入
【发布时间】:2012-06-24 15:20:00
【问题描述】:

有人可以解释一下为什么这没有按我的预期工作吗?

zen:~ emx$ echo ABC | perl -nle "print unpack 'H*'"
414243
zen:~ emx$ echo 414243 | perl -nle "print pack 'H*'"

zen:~ emx$

不知何故,我期待第二个命令打印 ABC

【问题讨论】:

    标签: perl stdin pack unpack


    【解决方案1】:

    unpack()如果不提供第二个参数,默认使用$_pack() on the other hand, does not.

    【讨论】:

    • 但是echo 414243 | perl -nle "print pack 'H*', $_" 也不会产生任何结果。
    • 那是因为你的 shell 在 perl 有机会看到它之前将 $_ 变量扩展为空。你想要echo 414243 | perl -nle "print pack 'H*', \$_"
    • 哎哟初学者的错误!感谢您指出。 echo 414243 | perl -nle 'print pack "H*", $_' 确实很棒。
    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 2011-12-13
    • 2010-12-25
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多