配列の一部だけを簡単に置換してくれる関数がspliceである。 spliceは非常に柔軟であるがために最初はかなりとっつきにくい。その反面、まとめて配列の操作をしたくなった際には心強い味方になってくれる。引数の数によって動作がかなり変わるのでその点をしっかりと押さえておきたい。
サンプル
#!/usr/bin/perl
;#
;#spliceの練習
;#
#-----------------------------#
#削除
#-----------------------------#
@array = (1..5);
splice(@array, 3); #$array[3] ~ $array[$#array]を削除
#○実行結果
# @array => (1,2);
#-----------------------------#
#削除(指定箇所)
#-----------------------------#
@array = (1..5);
splice(@array, 1, 3); #$array[1] ~ $array[3]を削除
#○実行結果
# @array => (1,5);
#-----------------------------#
#置換(削除あり)
#-----------------------------#
@array = (1..5);
@list = (a..c);
splice(@array, 1, 3, @list); #$array[1] ~ $array[3]を削除し、
#$array[1]の部分から@listを入れる
#○実行結果
# @array => (1,a,b,c,5);
#-----------------------------#
#置換(削除なし)
#-----------------------------#
@array = (1..5);
@list = (a..c);
splice(@array, 1, 0, @list); #$array[1]の部分から@listを入れる
#○実行結果
# @array => (1,a,b,c,2,3,4,5);
ちなみに以下に示す、左右の式はいずれも同じ意味を持つ。
push(@a,$x,$y) splice(@a,$#a+1,0,$x,$y)
pop(@a) splice(@a,-1)
shift(@a) splice(@a,0,1)
unshift(@a,$x,$y) splice(@a,0,0,$x,$y)
$a[$x] = $y splice(@a,$x,1,$y);
※perldocより引用
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。