関数順 インデックス
目的別 インデックス

構文
 
 splice 配列, 開始位置, 長さ,置き換えるリスト
 splice 配列, 開始位置, 長さ
 splice 配列, 開始位置

返り値
 
 削除した要素のリスト

説明

  • 配列から要素の一部を削除します。
  • 削除した要素のリストを返します。
  • 削除する要素の開始位置を指定できます。0から数えます。長さで削除する要素の大きさを指定します。省略すると最後まで削除します。
  • 開始位置に負の値を使用すると,末尾から数えます。長さに負の値を使用すると,残す要素の長さを指定します。
  • 置き換えるリストを指定すると要素を置き換えることができます。

使用例

配列@aryから一部の要素を削除する
#!/usr/bin/perl
use strict;
use warnings;

my @ary = qw/A B C D E F G/;
my @ret = ();

# (0から数えて)1つ目から2つの要素を削除
my @s1 = @ary;
@ret = splice @s1, 1, 2;
print "@s1\n";  # A D E F G
print "@ret\n"; # B C
print "\n";

# 3つ目から最後までを削除
my @s2 = @ary;
@ret = splice @s2, 3;
print "@s2\n";  # A B C
print "@ret\n"; # D E F G
print "\n";

# 後ろから3つを削除
my @s3 = @ary;
@ret = splice @s3, -3;
print "@s3\n";  # A B C D
print "@ret\n"; # E F G
print "\n";

# 先頭から後ろ3つを残して取得
my @s4 = @ary;
@ret = splice @s4, 0, -3;
print "@s4\n";  # E F G
print "@ret\n"; # A B C D
print "\n";
配列@aryの要素の1つ目と2つ目の要素をhoge, fuga, piyoに置き換える
#!/usr/bin/perl
use strict;
use warnings;

my @ary = qw/A B C D E F G/;

# 1つ目から2つの要素を置き換える
my @a2 = splice @ary, 1, 2, ('hoge', 'fuga', 'piyo');
print "@ary\n";   # A hoge fuga piyo D E F G
print "@a2\n";    # B C
print "\n";