- ベストアンサー
連想配列と比較させ変換したいのですが
ファイルから a,h,2,26,f というデータを読み込んで %hash = (1=>'a',2=>'b',‥‥,26=>'z') のような連想配列と比較させ 1,8,b,z,6 となるように、読み込んだものが英字ならキーを、数字なら値を 出力させたいのですが可能でしょうか? お教え願います。
- みんなの回答 (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;
その他の回答 (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 でなんとでもなります.
質問者
お礼
有難うございます。 参考にして作ってみます。 また解らないことがあったとき よろしくお願い致します。
お礼
すばらしい回答有難うございます。 大変参考になりました。