#! 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