配列の値を増やす、減らす
では、配列の値を処理する方法は分かりましたので、もう少し、配列に値を追加したり値を削除したりする方法を覚えておきましょう。これらの方法は、データを読み込んで分析するようなプログラムを書く場合に必要になります。配列の末尾に値を追加する push
配列の末尾に値を追加するには、push 関数を使います。
push(@配列名, '末尾に追加する値');
配列の先頭に値を追加する unshift
配列の先頭に値を挿入するのは unshift です。
unshift で値を追加すると、それまでの $配列名[0] は $配列名[1] に、$配列名[1] は $配列名[2] へと、一つずつ要素がずれていきます。
unshift(@配列名, '先頭に追加する値');
配列の先頭の値を削除する shift
配列の先頭から値を削除する場合は shift です。shift は $配列名[0] を削除し、元の $配列名[1] のを $配列名[0] へ、元の $配列名[2] を $配列名[1] へ...と、順番に前に詰めて行きます。なお、削除した値を別の変数に格納しておく事ができます。
my $deleted = shift(@配列名); # $配列名[0] を削除して前に詰める
配列の最後の値を削除する pop
配列の最後の値を削除するには、pop を使います。
my $deleted = pop(@配列名); # $配列名[$#配列名] を削除。
少し混乱してきましたか?
以下の図を眺めながら、プログラムを書いて整理しておきましょう。
Perl の配列操作
配列の要素の追加と削除のサンプルプログラム
# Perl の配列の扱いを覚えるためのプログラム # 配列に要素を追加/削除する方法 use strict; use warnings; use utf8; binmode STDOUT, 'encoding(utf8)'; #Windows の場合は utf8 -> cp932 my @hairetu = ( 'い', 'う', 'え' ); #初期状態 print "-------------------------------------------\n"; printf ("最初の状態: 要素数 %d \n", scalar @hairetu); print join(',', @hairetu),"\n"; #末尾に追加 push (@hairetu, 'お'); print "-------------------------------------------\n"; printf ("末尾に追加: 要素数 %d \n", scalar @hairetu); print join(',', @hairetu),"\n"; #先頭に追加 unshift (@hairetu, 'あ'); print "-------------------------------------------\n"; printf ("先頭に追加: 要素数 %d \n", scalar @hairetu); print join(',', @hairetu),"\n"; #末尾から削除 my $pop = pop (@hairetu); print "-------------------------------------------\n"; printf ("末尾から削除: 要素数 %d \n", scalar @hairetu); print join(',', @hairetu),"\n"; print "削除した要素=$pop\n"; #先頭から削除 my $shift = shift (@hairetu); print "-------------------------------------------\n"; printf ("先頭から削除: 要素数 %d \n", scalar @hairetu); print join(',', @hairetu),"\n"; print "削除した要素=$shift\n";出力は以下のようになります。
------------------------------------------- 最初の状態: 要素数 3 い,う,え ------------------------------------------- 末尾に追加: 要素数 4 い,う,え,お ------------------------------------------- 先頭に追加: 要素数 5 あ,い,う,え,お ------------------------------------------- 末尾から削除: 要素数 4 あ,い,う,え 削除した要素=お ------------------------------------------- 先頭から削除: 要素数 3 い,う,え 削除した要素=あ今回は覚えることが多くて少し大変でしたね。
今すぐに全ての方法を覚えなくても、「ああ、そういう事ができるのね」と頭の片隅に残っていればOKですよ。