- 締切済み
定数についての質問です
設定ファイルにこのように設定されている際に use constant SUUCHI_MAPPING => { 'one' => 'xxx', 'two' => 'yyy', 'three' => 'xxx', 'four' => 'zzz', 'five' => 'yyy', 'six' => 'yyy' } 下記のような持ち方にして使用しやすくするにはどのような処理をしたらいいでしょうか。 use constant SUUCHI_FORMAT => { xxx => ['one','three'], yyy => ['two','five','six'], zzz => ['four'] };
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
「順序に意味がない」なら, SUUCHI_MAPPING のような構造を SUUCHI_FORMAT のような構造に変換するサブルーチンを書けばいい. 単純には sub cvt { my $foo = {}; while (my ($key, $val) = each %{$_[0]}) { push @{$foo->{$val}}, $key; } $foo; } のようなサブルーチン (名前は適切なものにすべし) を使って use constant SUUCHI_FORMAT => cvt(SUUCHI_MAPPING); とすればできる, みたい. もちろん, 順序が保存されるとは限りません (そもそもハッシュである以上順序は関係ない).
- Tacosan
- ベストアンサー率23% (3656/15482)
確認ですが, SUUCHI_FORMAT における値の順序って, 何か意味はありますか? つまり, xxx => ['one', 'three'] でなければならないのでしょうか, それとも xxx => ['three', 'one'] であってもいいのでしょうか?
補足
いえ、値の順序に意味はまったくないです。 よろしくお願いします