splice ARRAY, OFFSET, [LENGTH, LIST]
配列ARRAY
のOFFSET
番目の要素からLENGTH
分を取り除き、LIST
が指定されていれば、それを代わりに挿入します。最後に配列から取り除かれた要素を返します。
splice
は、呼び出されたコンテキストによって異なる値を返します。リストコンテキストでは、splice
は配列から削除した要素のリストを返します。スカラーコンテキストで呼び出すと、削除した最後の要素を返します。
spliceの使い方
@list = (a, b, c, d, e, f, g); splice( @list, 1, 2, "X", "X", "X" ); print @list, "\n"; > aXXXdefg
上記では、インデックスの1に当たる要素から2個の要素(b と c)を削除して、代わりに3つの"X"
を挿入しています。
要素を削除せずに挿入だけしたいときは長さ指定のLENGTH
を 0 にします。
@list = (a, b, c, d, e, f, g); splice( @list , 1, 0, "X", "X", "X" ); print @list, "\n"; > aXXXbcdefg
要素の削除だけを行いたいときは挿入する値LIST
を省略します。
@list = (a, b, c, d, e, f, g); splice( @list , 1, 2 ); print @list, "\n"; > adefg
引数OFFSET
に負の数を指定すると、配列の末尾から数えてOFFSET
番目の要素が指定されたことになります。
@list = (a, b, c, d, e, f, g); splice( @list , -3, 2 ); print @list, "\n"; > abcdg
LENGTH
を省略すると、OFFSET
以降のすべての要素を取り除けます。
@list = (a, b, c, d, e, f, g); splice( @list , -3); print @list, "\n"; > abcd
LENGTH
に負の数を指定すると、配列の最後のLENGTH
個の要素を除いた部分を指定したことになります。
@list = (a, b, c, d, e, f, g); splice( @list ,1, -3, "X"); print @list, "\n"; > aXefg