taiju回答ポイント 70ptウォッチ 3

Perlのハッシュのリファレンスについて質問です。


use strict;
use warnings;
use Data::Dumper;

print Dumper {
one => sub { return 1 }->(),
two => sub { return 2 }->(),
hoge => sub { return () }->(),
fuga => sub { return () }->()
};

便宜上、今は関数は無名関数にしています。
関数の返り値を使って、ハッシュのリファレンスを作りたい時に、上記のようなケースになった場合、下記のデータ構造がDumpされます。

$VAR1 = {
'one' => 1,
'hoge' => 'fuga',
'two' => 2
};

hogeというキーにfugaという値が代入されてしまっていて、意図したデータ構造になりません。

意図したデータ構造は以下のような形です。

$VAR1 = {
'one' => 1,
'fuga' => undef,
'hoge' => undef,
'two' => 2
};

値を代入するために呼び出す関数を修正しない限りは、予め初期値を入れる他ないのでしょうか?

print Dumper {
one => sub { return 1 }->() || undef,
two => sub { return 2 }->() || undef,
hoge => sub { return () }->() || undef,
fuga => sub { return () }->() || undef
};

もっと良い解決方法というか、こうやったらいいよっていう方法があったら教えてください。
よろしくお願いします。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

みんなの回答

この質問へのコメント

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2011-05-04 18:47:36
終了日時
2011-05-11 18:50:03
回答条件
1人1回まで

この質問のカテゴリ

この質問に含まれるキーワード

Perl1679hoge915関数2326リファレンス182ハッシュ66

人気の質問

メニュー

PC版