Perlについての質問箱 20箱目

このエントリーをはてなブックマークに追加
223デフォルトの名無しさん
>>221-222
もちつけ、splice(@hoge, $from, $d); # splice(@hoge, 20, 30 - 20); じゃないか?
# これじゃ削除だけだけど

>>214
質問の件はspliceで出来るだろうからちょっとツッコミを。

Perlでの擬似多次元配列は無名配列/無名ハッシュを用いて実現されている。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlref.html
> $hoge[0]=('a'=>5,'f'=>9,'k'=>8,'d'=>12);
これは正しくはこう書く
$hoge[0]={'a'=>5,'f'=>9,'k'=>8,'d'=>12};

で、これを読めば分かるように$hoge[$i]の中身はリファレンスなので、
  foreach $key (keys %{$hoge[$i]}) {
   $tmp[$j]{$key} = $hoge[$i]{$key};
  }
ここは、この場合必要としてるのは浅いコピーだから、
$tmp[$j]=$hoge[$i]とリファレンスをコピーしてやれば十分