【perl】関数splice〜配列の要素を削除・挿入

今日もいろいろ実験してみました。ますは関数splice。

#! usr/bin/perl

use strict;
use warnings;

#◎【基本】splice(要素をいじりたい配列の,この要素(添え字)から,これだけの要素数を削除し,そこにこのリストを挿入)
my @array = qw(a b c d e f g h i j k l m n);
my @array1 = qw(11 22 33 44 55 66 77 88);

my @removed = splice(@array,2,6,@array1);

print "\@array=@array\n";     #出力結果 =>a b 11 22 33 44 55 66 77 88 i j k l m n
print "\@removed=@removed\n"; #出力結果 =>c d e f g h

print "\n";

#◎splice(要素をいじりたい配列の,この要素(添え字)から,これだけの要素数を削除)

my @removed1 = splice (@array,0,6);

print "\@array=@array\n";       #出力結果 =>55 66 77 88 i j k l m n
print "\@removed1=@removed1\n"; #出力結果 =>a b 11 22 33 44

print "\n";

#◎splice(要素をいじりたい配列の,この要素(添え字)から) =>配列の最後までが削除対象。

my @removed2 = splice(@array,5);

print "\@array=@array\n";       #出力結果 =>55 66 77 88 i
print "\@removed2=@removed2\n"; #出力結果 =>j k l m n

print "\n";

#◎splice(要素をいじりたい配列の) =>配列の最初から最後までが削除対象

my @removed3 = splice(@array);

print "\@array=@array\n";#出力結果 =>  =>なにも出ないよ。だって、全部削除しちゃったもん。
print "\@removed3=@removed3\n";#出力結果 =>55 66 77 88 i

my $array = @array;
print "$array\n";#出力結果 =>0 =>配列の要素がホントにないか見てみた。

print "\n";

#◎【実験1】spliceで配列の最初に挿入だけしたい
my @array2=qw(999 888 777 666);
my @removed4 = splice(@array2,0,0,qw(z y x));

print "\@array2=@array2\n";#出力結果 =>z y x 999 888 777 666 =>配列の最初に追加された!
print "\@removed4=@removed4\n";#出力結果 =>  =>なにも出ないよ。だって、なにも削除してないもん。

print "\n";

#◎【実験2】spliceで配列の途中に挿入だけをしたい
splice(@array2,4,0,('R','T','Y'));

print "@array2\n";#出力結果 =>z y x 999 R T Y 888 777 666 =>@array2[3]の前に追加された!

print "\n";

#◎【実験3】spliceで配列の最後に挿入だけをしたい
splice(@array2,$#array2,0,qw(あ い う));

print "@array2\n";#出力結果 =>z y x 999 R T Y 888 777 あ い う 666 =>@array2[$#array2]の前に追加された!

う〜ん。。。spliceを使って、配列の一番最後に要素追加をすることは不可能なのだろうか…。やはり、配列の一番最後に要素を追加するときは、push関数なのか…?