文字列中に含まれるハッシュ要素の変数展開

ハッシュでは文字列の中にハッシュを記述しても、ハッシュ全体を展開するような機能はありません。ただハッシュの要素はそれぞれ変数と同じ扱いなので文字列の中にハッシュの要素を記述すると変数展開することができます。ここでは Perl でハッシュ要素の変数展開を行う方法について解説します。

(Last modified: )

ハッシュ要素の変数展開

ダブルクォーテーションで囲まれた文字列中に配列が含まれていると、配列の要素がスペースで区切られて展開されました。ではハッシュの場合はどうかと言うとハッシュ全体を表す %ハッシュ名 のような記述を文字列野中に行っても展開はされません。

my %address = (
"鈴木" => "東京都千代田区",
"山田" => "東京都葛飾区"
);

print "%address\n";

上記の場合は単に "%address" と言う文字列が出力されます。

このようにハッシュ全体を文字列の中で変数展開する手段は用意されていません。ただ、ハッシュの要素 1 つ 1 つは変数ですので、ハッシュの要素をダブルクォーテーションで囲まれた文字列の中に記述した場合は他の変数と同じく変数展開されます。

my %address = (
"鈴木" => "東京都千代田区",
"山田" => "東京都葛飾区"
);

print "$address{'鈴木'}\n";

上記の場合は「東京都千代田区」と言う文字列が出力されます。

サンプルコード

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

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

my %address = (
"鈴木" => "東京都千代田区",
"山田" => "東京都葛飾区"
);

print "%address\n";
print "$address{'鈴木'}\n";

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

perl sample.pl

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

文字列中に含まれるハッシュ要素の変数展開(1)

文字列の中にハッシュを記述した場合は変数展開されることはないですが、ハッシュの要素を記述した場合は変数展開されているのが確認できます。

-- --

Perl でハッシュ要素の変数展開を行う方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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