2
有人可以解释为什么这不工作,因为我期望它?Perl包,解压缩和STDIN
zen:~ emx$ echo ABC | perl -nle "print unpack 'H*'"
414243
zen:~ emx$ echo 414243 | perl -nle "print pack 'H*'"
zen:~ emx$
不知怎的,我期待第二个命令打印ABC
有人可以解释为什么这不工作,因为我期望它?Perl包,解压缩和STDIN
zen:~ emx$ echo ABC | perl -nle "print unpack 'H*'"
414243
zen:~ emx$ echo 414243 | perl -nle "print pack 'H*'"
zen:~ emx$
不知怎的,我期待第二个命令打印ABC
unpack()
默认使用$_
,如果你不提供第二个参数提供它; pack()
on the other hand, does not。
但是'echo 414243 | perl -nle“print pack'H *',$ _”'也不会产生任何结果。 – emx
这将是因为你的shell在'perl'有任何机会看到它之前将'$ _'变量扩展为空。你想'回声414243 | perl -nle“print pack'H *',\ $ _”' – lanzz
这个初学者的错误!感谢您指出。 '回声414243 | perl-nle'打印包'H *“,$ _''确实很棒。 – emx