汚染モード

back
-T

外部から入力されるデータ(引数、環境変数、ファイル入力等)に対して
汚染チェックが行われ、「そのまま」その値を使用(例えば system でコマンド実行)
できないようにするオプション。


#!/usr/bin/perl -T

open F, $ARGV[0] or die "cannot open $ARGV[0]: $!\n";
while (<F>) {
  #
  #
}
close(F);

外部から入力された $ARGV[0] は汚染された変数であり、
そのまま open しようとしてもエラーになる。

変数を「きれいにする」には、入力を正規表現でチェックし、
メモリ変数($1, $2 ...)を代入する。

$file = $ARGV[0];
$file =~ /(\w*)/;
$file = $1;           # アルファベット&_ だけになった

あくまでコーディング中に、プログラマに「この変数はチェックしないでええんかコラ」と
通知するための機能。
オプションをつけて実行させて、「変な値が来たときはエラーにする」などのエラーチェック
を行うためのオプションではなく、「エラーチェックをプログラマに実装させるよう注意喚起
する」ためのオプション。

当然実行速度は遅くなる。

back