0
$ perl -MMIME::Base64 -e 'print encode_base64("syn_ack@163.com");'
c3luX2Fjay5jb20=
$ perl -MMIME::Base64 -e 'print decode_base64("c3luX2Fjay5jb20=");'
syn_ack.com

エンコード結果を元の文字列にデコードできません。なぜですか?

4

3 に答える 3

1

Perl で予期しない結果が表示された場合は、警告が有効になっていることを確認してください。

$ perl -w -MMIME::Base64 -e 'print encode_base64("syn_ack@163.com");'
-e 行 1 の文字列で @163 の意図しない補間が行われる可能性があります。
c3luX2Fjay5jb20=

単一引用符 ( ) で囲まれた文字列内では補間は行われない''ため、次のように実行できます。

perl -w -MMIME::Base64 -e 'print encode_base64('syn_ack@163.com');'

または、二重引用符 ( "") を残してエスケープします。@

perl -w -MMIME::Base64 -e 'print encode_base64("syn_ack\@163.com");'

どちらかが出力されます

c3luX2Fja0AxNjMuY29t

デコードすると

$ perl -w -MMIME::Base64 -e 'print decode_base64("c3luX2Fja0AxNjMuY29t");'
syn_ack@163.com
于 2013-03-21T09:57:56.080 に答える