01/10/17 08:37
> my ($i, $count) = (0,0);
> foreach (@source){
> if ($source[$i] =~ /<!--count-->([\d]+)<!--\/count-->/ig) {
> $count = $1;
> $count++;
> $source[$i] =~ s/<!--count-->[\d]+<!--\/count-->/<!--count-->$count<!--\/count-->/ig;
> }
> $i++;
> }
こんなわけのわからない処理は止めなさい。
foreachの使い方がわかってない。
あと、変換はs///eg一発で出来るよ。
もっと言うと、テンポラリファイルに書き出してからrenameしたほうがいい。
openの戻り値はきちんとチェックしようね。
&lock_file;
open SRC "$source" or die;
open TMP "> $tmp" or die;
while (<SRC>) { s///eg; print TMP $_; }
close SRC;
close TMP;
rename($tmp, $source);
&unlock_file;
こんな流れで。