2012-12-15 13 views
3

代碼中的錯誤的這行了以「在解壓縮無效類型‘T’」:「解包中的無效類型'是什麼意思?

my $x = unpack(chr(ord("a") + 19 + print ""), $string); 

它試圖獲取這是第一個變換這樣$ x的原始值:

my $string = pack("u",$x); 

我無法在互聯網上的任何地方找到此錯誤。我基本上試圖做一個簡單的字符串混淆器,它可以檢索原始字符串。

回答

5

功能print在失敗時返回false。在數字上下文中,假值被認爲是0.在你的情況下,pack的第一個參數變成「t」,Perl引發一個錯誤。

請注意,print可能會失敗,通常在您執行close STDOUT的情況下。此外,print返回成功,不限於1。在將來的版本中返回2,blah或任何其他真值的可能性很小。

+0

當你說「包的第一個參數變成‘T’」我恍然大悟。我是一個人......如果我用「u」包裝,我需要把它做成+20。 – Marcus

5

爲什麼在世界上你會這樣做?你爲什麼使用印刷品的價值?逆操作$string = pack("u", $x);簡直是$x = unpack("u", $string);

+0

一點混亂,這顯然甚至讓我愚弄。我正在實施一項實施起來並不明智的要求,除了產生薪水之外。 :) – Marcus

1

診斷是有解釋呢:)

$ perl -Mdiagnostics -le " print unpack q{t} , 1" 
Invalid type 't' in unpack at -e line 1 (#1) 
    (F) The given character is not a valid pack or unpack type. 
    See "pack" in perlfunc. 
    (W) The given character is not a valid pack or unpack type but used to be 
    silently ignored. 

Uncaught exception from user code: 
     Invalid type 't' in unpack at -e line 1. 
at -e line 1. 
相關問題