【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関数なのか…?