オライリー社の「CGIプログラミング」のP131~132に書かれています。
このサブルーチンに渡された全ての行を調べて、
最小のインデントを探し、
全ての行からその最小インデントを取り除いているらしいです。
とくに「sort」の部分がよくわかりません。
sub uni {
local $_ = shift;
my ($indent) = sort /^([ \t]*)\s/gm;
s/^$indent//gm;
return $_
}
よろしくお願いします。
sub uni { local $_ = shift ; # $_ に引数を取り込み my ($indent) = sort /^([ \t]*)\s/gm ; # 正規表現に g 指定子が付いて左辺値(sort の引数)がリストなので # カッコにマッチした部分(インデント ~先頭の空白~ より一文字少ないもの)をリストにして返す # sort はリストを並び換えて返す # インデントがスペースだけなら文字数が少ない順番に返す # my ($indent) はカッコ付きなのでリスト # 中身は $indent ひとつだけなのでリストの先頭 (一番短いもの) を受けとる s/^$indent//gm ; # 各行の先頭から $indent を削除 return $_ ; # 結果を返す }
コメント(0件)