Perlコーディング初心者質問スレ Part 49
■ このスレッドは過去ログ倉庫に格納されています
0153nobodyさん
2006/06/04(日) 19:02:53ID:???@AS_ISで指定したタグに囲まれた部分はインデントを追加しないで
他の部分に追加ということをやりたいようなのだが、オリジナルは
以下のような処理になっている。
if (@AS_ISタグに囲まれた部分がある) {
文字列を 「囲まれた部分の前」、「囲まれた部分」「囲まれた部分の後」
の3つに分割
「囲まれた部分の前」「囲まれた部分の後」をそれぞれ再帰的に
自分を呼んでインデント
「囲まれた部分の前」をインデントしたもの,「囲まれた部分」,
「囲まれた部分の後」をインデントしたものを連結して返す
} else {
改行の後ろにインデントを追加する
}
デフォルトで@AS_ISにtdが含まれているので、<td>〜</td>の数だけ
再帰する。再帰するごとにだんだん短くなるが文字列がコピーされるので
O(n^2)のメモリを消費し、コピー処理でCPUも同じオーダで食うようだ。
書き直した奴は、
とりあえず全部の改行にインデントをつける
@AS_ISで指定されたタグに囲まれた部分の改行の後のインデントを削って戻す
という処理にしてみた。
■ このスレッドは過去ログ倉庫に格納されています