delete関数:指定された配列要素を削除する

Perl で用意されている組み込み関数の一つである delete 関数の使い方です。 delete 関数は指定された配列要素を削除します。

(Last modified: )

delete関数の書式と基本的な使い方

delete 関数は次のように定義されています。

delete
delete(EXPR)
引数に指定された配列要素を削除します。

パラメータ:
  EXPR  配列の要素
戻り値:
  削除された値

1 番目の引数には対象となる配列の要素を指定します。配列の要素は $ハッシュ名[インデックス] で表されます。指定したインデックスが存在した場合、要素は削除されます。

配列の場合、最後の要素が削除された場合には要素が 1 つ減りますが、最後では無い要素が削除された場合には該当のインデックスの値が未定義値 undef に設定されるだけで要素数に変化はありません。(要素が一つずつずれるわけではありません)。

具体的には次のように記述します。

my @city = ("東京", "大阪", "名古屋");
delete($city[1]);

この場合はインデックス 1 の要素に格納された "大阪" が undef に変更されます。

※delete関数はハッシュ要素に対して使用できます。詳しくは「delete関数:指定されたハッシュ要素を削除する」を参照して下さい。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my @city = ("東京", "大阪", "名古屋");

my $val = delete($city[2]);
print "削除された値:$val\n";

print "残っている要素:\n";
foreach my $i(0 .. $#city){
  print "$city[$i]\n";
}

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

delete関数:指定された配列要素を削除する(1)

配列からインデックス 2 の要素を削除し、削除した要素に格納されていた値と、配列に残っている要素の値を順に画面に出力しました。

-- --

Perl で用意されている組み込み関数の一つである delete 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。