3

このコード行は、「unpackの無効なタイプ't'」でエラーになります。

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

この方法で最初に変換された$xの元の値を取得しようとしています。

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

このエラーはインターネットのどこにも見つかりません。私は基本的に、元の文字列を取得できる単純な文字列難読化ツールを作成しようとしています。

4

3 に答える 3

5

なぜあなたはこれをするのですか?なぜその価値に印刷を使用しているのですか?の逆演算$string = pack("u", $x);は単純です$x = unpack("u", $string);

于 2012-12-15T02:41:54.183 に答える
5

関数printは失敗すると false を返します。数値のコンテキストでは、偽の値は 0 と見なされます。あなたの場合、pack の最初の引数は "t" になり、Perl はエラーを発生させます。

print失敗する可能性があることに注意してくださいclose STDOUT。また、に限らず、成功するとtrueprintを返します。、、または将来のバージョンでその他の真の値を返す可能性はほとんどありません。12blah

于 2012-12-15T02:23:12.183 に答える
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.
于 2012-12-17T13:36:05.667 に答える