• ベストアンサー

連想配列と比較させ変換したいのですが

ファイルから a,h,2,26,f というデータを読み込んで %hash = (1=>'a',2=>'b',‥‥,26=>'z') のような連想配列と比較させ 1,8,b,z,6 となるように、読み込んだものが英字ならキーを、数字なら値を 出力させたいのですが可能でしょうか? お教え願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • atom_seed
  • ベストアンサー率48% (25/52)
回答No.2

コンパクトにまとめてみました。 my @load_data = ( 'a', 'h', 2, 26, 'f' ); @hash{ a .. z } = ( 1 .. 26 ); # 逆引きデータを作成 @hash{ values %hash } = keys %hash; # 双方向変換 my @convert_data = map { $hash{$_} } @load_data;

huhumu
質問者

お礼

すばらしい回答有難うございます。 大変参考になりました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その %hash に対して while (my ($key, $val) = each %hash) { $cvt{$key} = $val; $cvt{$val} = $key; } と双方向に変換するためのハッシュ %cvt を作れば, あとは http://oshiete1.goo.ne.jp/qa4016764.html の #3 のように s///eg でなんとでもなります.

huhumu
質問者

お礼

有難うございます。 参考にして作ってみます。 また解らないことがあったとき よろしくお願い致します。

関連するQ&A

専門家に質問してみよう