>>479
この処理だけ100万回やるので全体の処理時間がここで決まるとかじゃなければ
あまり気にしてもしょうがないと思うが、

use Benchmark;

timethese(undef, {
SPLIT_JOIN => sub {
my $hoge = "hoge1,hoge1,hoge1,\n";
my @array = split(/,/,$hoge);
$array[1] = "hoge2";
$hoge = join(",",@array);
},
SUBSTITUTE => sub {
my $hoge = "hoge1,hoge1,hoge1,\n";
$hoge =~ s/,[^,]*/,hoge2/;
},
INDEX_SUBSTR => sub {
my $hoge = "hoge1,hoge1,hoge1,\n";
my $pos1 = index($hoge, ',')+1;
my $pos2 = index($hoge, ',', $pos1);
substr($hoge, $pos1, $pos2-$pos1) = 'hoge2';
},
});

Benchmark: running INDEX_SUBSTR, SPLIT_JOIN, SUBSTITUTE for at least 3 CPU seconds...
INDEX_SUBSTR: 3 wallclock secs ( 3.14 usr + 0.00 sys = 3.14 CPU) @ 222680.89/s (n=699218)
SPLIT_JOIN: 4 wallclock secs ( 3.12 usr + 0.00 sys = 3.12 CPU) @ 108552.56/s (n=338684)
SUBSTITUTE: 3 wallclock secs ( 3.19 usr + 0.00 sys = 3.19 CPU) @ 188749.53/s (n=602111)