3

Perl でコードを実行すると、次のようになります。

print "Literal Hex: \x{50} \n";

私はこれを取得します: " Literal Hex: P"

ただし、コードを実行すると:

my $hex_num = 50; 
print "Interpolated Hex: \x{$hex_num}";

変数が適切に補間されず、次のようになります: " Interpolated Hex:"

Unicode および 8 進エスケープ シーケンスで変数補間を使用しようとすると、同様の失敗が発生します。

補間された文字列変数でエスケープ シーケンス (\x、\N など) を使用することは可能ですか? 二重引用符で囲まれた $variable は常に補間されるという印象を受けましたが、これは例外ですか?

注:この質問のおかげで、私は回避策を認識しています:chr(hex($hex_num))が、エスケープ シーケンスの変数補間に関する上記の質問はまだ残っています。

4

3 に答える 3

1

私が抱えていた問題は、エスケープされた変数を次のような別の変数に追加することでした:

$MYVAR = "20";
$myQuery = "\x02\x12\x10\x$MYVAR\x10";

多くの\\x、\Q\x、およびその他のさまざまなエスケープシーケンスを試してみましたが、役に立ちません!!!

私の回避策は、直接エスケープするのではなく、文字列に追加する前に var を変換することでした。

$MYVAR = chr(hex(20));

直接の正規表現ソリューションをかなり検索しましたが、最終的にこれを実行する必要がありました。

于 2014-03-27T19:31:09.003 に答える