2012-06-22 78 views
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

回答

5

unpack()默認使用$_,如果你不提供第二個參數提供它; pack() on the other hand, does not

+0

但是'echo 414243 | perl -nle「print pack'H *',$ _」'也不會產生任何結果。 – emx

+0

這將是因爲你的shell在'perl'有任何機會看到它之前將'$ _'變量擴展爲空。你想'回聲414243 | perl -nle「print pack'H *',\ $ _」' – lanzz

+0

這個初學者的錯誤!感謝您指出。 '回聲414243 | perl-nle'打印包'H *「,$ _''確實很棒。 – emx