配列変数のクリアについて
$line[0]='a,1,2,3,4,5';
$line[1]='b,1,2,3,4,5';
$line[2]='c,1,2,3,4,5';
$line[3]='d,1,2,3,4,5';
$line[4]='e,1,2,3,4,5';
$line[5]='f,1,2,3,4,5';
for($i=0;$i<=$#line;$i++){
($a,$b,$c,$d,$e,$f)=split(/\,/,$line[$i]);
push(@str,$a);
}
for($i=0;$i<=$#str;$i++){
print '$str',"[$i] = ","$str[$i]\n";
}
print "\n\n";
@str="";
for($i=0;$i<=$#line;$i++){
($a,$b,$c,$d,$e,$f)=split(/\,/,$line[$i]);
push(@str,$a);
}
for($i=0;$i<=$#str;$i++){
print '$str',"[$i] = ","$str[$i]\n";
}
__END__
実行結果
$str[0] = a
$str[1] = b
$str[2] = c
$str[3] = d
$str[4] = e
$str[5] = f
$str[0] =
$str[1] = a
$str[2] = b
$str[3] = c
$str[4] = d
$str[5] = e
$str[6] = f
二回目は$str[0]から入らないのですね。
@str="";
にその様にさせる意味があったのでしょうか?
pushなので、変数(@str)をクリアして使おうとしたら、こんな事になっていました。
お礼
$str =~ tr/-0-9//cd; とすることでできました。 ありがとうございますmm