解压缩“无效类型't'是什么意思?

时间:2012-12-15 01:41:26

标签: perl

这行代码在解包时出现“无效类型't'错误”:

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

它正在尝试检索以这种方式首次转换的$ x的原始值:

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

我无法在互联网上的任何地方找到此错误。我基本上试图创建一个简单的字符串混淆器,它可以检索原始字符串。

3 个答案:

答案 0 :(得分:5)

函数print在失败时返回false。在数值上下文中,false值被视为0.在您的情况下,pack的第一个参数变为“t”,Perl会引发错误。

请注意,print可能会失败,通常是在您执行close STDOUT的情况下。此外,print成功时返回 true ,不限于1。在将来的版本中返回2blah或任何其他真值的可能性很小。

答案 1 :(得分:5)

为什么你会这样做呢?你为什么要使用print作为它的价值? $string = pack("u", $x);的反向操作只是$x = unpack("u", $string);

答案 2 :(得分: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.
相关问题