【perl】popやpush、shiftやunshift関数、配列のスライスをsplice関数で書き換える

#! usr/bin/perl

use strict;
use warnings;

my @array = qw(1 2 3 4 5 6 7 8);
my $item = 'aabbcc';

#popやpush、shiftやunshift関数、配列のスライスをsplice関数で書き換えてみよーう
#(=head=cutで囲まれた部分と同じものをspliceを使って書く)

#◎【実験1】push関数→splice関数
=head
push(@array, $item);
print "@array\n";                   #出力結果 =>1 2 3 4 5 6 7 8 aabbcc
=cut

#splice (@array,$#array+1,0,$item); #←この書き方でも大丈夫。
splice (@array,@array,0,$item);
print "@array\n";                   #出力結果 =>1 2 3 4 5 6 7 8 aabbcc

print "\n";

#◎【実験2】pop関数→splice関数
=head
my $item1 = pop(@array);
print "$item\n";#出力結果 =>aabbcc
=cut

#my $item1_1 = splice(@array,$#array,1);
#my $item1_1 = splice(@array,$#array);   #最後の要素のみを削るなら、削る要素数(1)を省いても大丈夫
my $item1_1 = splice(@array,-1);         #配列を逆から数えたときの添え字[-1]
print "$item1_1\n";                      #出力結果 =>aabbcc

print "\n";

#◎【実験3】shift関数→splice関数
=head
my $item2 = shift(@array);
print "$item2\n";   #出力結果 =>1
=cut

my $item2_1 =splice (@array,0,1);
print "$item2_1\n"; #出力結果 =>1

print "\n";

#◎【実験4】unshift関数→splice関数
=head
unshift(@array, $item);
print "@array\n";   #出力結果 =>aabbcc 2 3 4 5 6 7 8
=cut

splice (@array,0,0,$item);
print "@array\n";   #出力結果 =>aabbcc 2 3 4 5 6 7 8

print "\n";

#◎【実験5】配列のスライスをsplice関数で行う
=head
my $index = 2;
$array[$index] = $item;
print "$array[$index]\n"; #出力結果 =>aabbcc
print "@array\n";         #出力結果 =>aabbcc 2 aabbcc 4 5 6 7 8
=cut

my $index5 =2;
splice(@array,$index5,1,$item);
print "$array[$index5]\n";#出力結果 =>aabbcc
print "@array\n";         #出力結果 =>aabbcc 2 aabbcc 4 5 6 7 8