//i のように
大文字小文字を無視するオプションをつけると、秒単位で
時間がかかった 。/\n+<p>\n/iのように
1文字の英文字のために //i を使っていた
ところがあったが、展開して /\s+<[pP]>\s+/
としたら、気にならない速度で処理されるようになった。
また、短い文字列に対して//を何度も呼ぶときに、
処理時間がかかるように感じられた。長い文字列(10KBほど)を正規表現で
検索しても、それほど時間がかからなかった。正規表現のコンパイルに
時間がかかるのか?>Perl 5.8.8。
sprintf("%02d", $d);という書き方ももったいないので
($d < 10) ? "0" . $d : $d;という書き方にした。
ただし、処理速度に関して、この影響はあまりなかったもよう。
なんとなく、配列の添え字($arr[$i])も遅そうだったので、
配列のエレメント (foreach $element (@arr)) を
直接扱うようにした。
年月日の文字列を作ろうとして、
$y年$m月としたが、$y と "年" が連続した変数として
みなされたようで、$y が展開されなかった。そのため、
${y}年${m}月とした。UTF-8でも変数が記述できる弊害か?
どこが遅いか調べるために、 perl のスクリプト中に時刻を表示するデバッグ文を入れまくった。 いやはや。

