• ベストアンサー
  • 暇なときにでも

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

  • 質問No.4018195
  • 閲覧数73
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 55% (5/9)

ファイルから

a,h,2,26,f

というデータを読み込んで

%hash = (1=>'a',2=>'b',‥‥,26=>'z')

のような連想配列と比較させ

1,8,b,z,6

となるように、読み込んだものが英字ならキーを、数字なら値を
出力させたいのですが可能でしょうか?
お教え願います。

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

  • 回答No.2
  • ベストアンサー

ベストアンサー率 48% (25/52)

コンパクトにまとめてみました。

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

お礼率 55% (5/9)

すばらしい回答有難うございます。
大変参考になりました。
投稿日時:2008/05/14 10:40

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 23% (3656/15482)

その %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

お礼率 55% (5/9)

有難うございます。
参考にして作ってみます。
また解らないことがあったとき
よろしくお願い致します。
投稿日時:2008/05/13 07:09
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ