本文へスキップ
BecomeCoder

Perlコース · 第5章 ハッシュ · レッスン17

keys / values / exists / delete ― 一覧と存在確認

ブラウザで完結

導入

ハッシュのキー一覧・値一覧を取り出したり、あるキーが存在するか調べたり消したりする道具がそろっています。

説明

keys %h で全キー、values %h で全値のリストが得られます。ハッシュは順番を保証しないので、表示するときは sort keys %h で並べるのが定番です。foreach と組み合わせて全要素を回れます。

use strict;
use warnings;

my %score = (math => 90, english => 75, science => 88);

foreach my $subject (sort keys %score) {
    print "$subject: $score{$subject}\n";
}

exists $h{キー} はキーがあるかを真偽で返し、delete $h{キー} はそのペアを取り除きます。

use strict;
use warnings;

my %stock = (pen => 5, note => 0);

print "penあり\n" if exists $stock{pen};
print "eraserなし\n" unless exists $stock{eraser};

delete $stock{note};
print "noteは今: ", (exists $stock{note} ? "あり" : "なし"), "\n";

やってみよう

キーを増やして sort keys の並びを確かめましょう。exists で存在しないキーを調べたり、delete の対象を変えたりしてみてください。

演習

ハッシュ %h(a => 1, b => 2, c => 3) を入れ、sort keys %hforeach で回して、各行を キー=値 の形(例 a=1)で表示してください。

ヒント1を見る

foreach my $k (sort keys %h) { print "$k=$h{$k}\n"; }

実際に動かしてみよう

下のエディタにPerlを書いて「実行」を押すと、学習用シミュレータが print / say の出力を表示します(本物のperlではなく、教材の範囲を再現した軽量なエンジンです)。スカラ/配列/ハッシュ・制御構文・サブルーチン・正規表現(=~ / s///)なども動きます。本文の例を書き換えて動かしてみましょう(ファイル入出力・リファレンス・CPANモジュールなど一部の機能は対象外です)。

Perl — ブラウザ内で実行(学習用シミュレータ)

Perlの教材サブセットを動かす学習用シミュレータを読み込みます(本物のperlではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。