这行代码错误,“解包中的类型't'无效”:
my $x = unpack(chr(ord("a") + 19 + print ""), $string);
它试图检索最初以这种方式转换的 $x 的原始值:
my $string = pack("u",$x);
我在互联网上的任何地方都找不到这个错误。我基本上是在尝试制作一个简单的字符串混淆器,它可以检索原始字符串。
这行代码错误,“解包中的类型't'无效”:
my $x = unpack(chr(ord("a") + 19 + print ""), $string);
它试图检索最初以这种方式转换的 $x 的原始值:
my $string = pack("u",$x);
我在互联网上的任何地方都找不到这个错误。我基本上是在尝试制作一个简单的字符串混淆器,它可以检索原始字符串。
函数print
在失败时返回 false。在数字上下文中,错误值被视为 0。在您的情况下,pack 的第一个参数变为“t”并且 Perl 引发错误。
请注意,这print
可能会失败,通常是在您这样做的情况下close STDOUT
。此外,成功时print
返回true,不限于1
. 2
在未来的版本中返回,blah
或任何其他真实值的可能性很小。
你到底为什么要这样做?你为什么要使用 print 来实现它的价值?的逆运算$string = pack("u", $x);
很简单$x = unpack("u", $string);
诊断可以解释它:)
$ 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.