-1

このような単純な perl スクリプトを (Linux 上で bash を使用して) 実行すると、

$to_run = q(echo '\t');
$res = `$to_run`;
print $res

\tバックスラッシュ文字と「t」文字が印刷されると思います。確かに、bashだけで実行すると

echo '\t'

なるほど\t。ただし、perl スクリプトはタブレータを出力します。

タブレータが で展開されるのはなぜ$resですか? そのようにすべての文字が展開されているのは何ですか?そして、最も重要なことは、どうすれば拡大を止めることができるでしょうか?

4

1 に答える 1

5

バッククォートは、使用/bin/shするシェルに関係なく、を使用して評価されます。タブに変換される によって実装された のPOSIX XSI 準拠バージョンです。echosh内部\tで実行して、自分で試してみてください。echo '\t'sh

この動作を回避するには、バッククォートprintf '%s\n'の代わりに使用してみてください。echo

于 2013-10-07T00:24:38.463 に答える