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

Mar*_*cus 3 perl

这行代码错误输出"unpack type't't in unpack":

my $x = unpack(chr(ord("a") + 19 + print ""), $string);
Run Code Online (Sandbox Code Playgroud)

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

my $string = pack("u",$x);
Run Code Online (Sandbox Code Playgroud)

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

yas*_*asu 5

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

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


hob*_*bbs 5

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