# で始まるコメント行は分離せず、要素1個の配列として返します。
sub log_split{
my $str = $_[0];
my @ret = ();
if($str =~ /^#/){
$ret[0] = $str;
return @ret;
}
my @replace = ();
my $counter = 0;
while($str =~ /^([^"]*?)"(.+?)"(.*)$/){
$str = $1."__リプレ_${counter}__".$3;
$replace[$counter] = $2;
$counter++;
}
@ret = split(/ +/,$str);
my $j=0;
for(my $i=0;$i<$counter;$i++){
for(;$j<=$#ret;$j++){
if($ret[$j] eq "__リプレ_${i}__"){
$ret[$j] = $replace[$i];
last;
}
}
}
return @ret;
}
使い方
my $file = "squid.log";
open my $fh, "<$file";
while(<$fh>){
my @elements = &log_split($_);
}
close $fh;