• ベストアンサー

サブルーチンでファイルの内容をハッシュに格納したい。

次のようなファイルA.txtが有った場合に、ファイルを読み込んで、その内容をハッシュに展開したいと考えています。できれば、サブルーチン化して、引数で渡したハッシュに格納したいのですが、どうすればよいでしょうか? 教えてください。 ----- hoge1 10 hoge2 20 hoge3 30

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

こんな感じでどうでしょう? ハッシュを渡されない場合は、無名ハッシュにデータをセットして返します。 sub load_hash {   my ($file, $hash) = @_;   if (ref($hash) ne 'HASH') {     $hash = {};   }   open FH, $file or return $hash;   while (<FH>) {     chomp;     my ($key, $val) = split /区切り文字/;     $hash->{$key} = $val;   }   close FH;   return $hash; } 用例1 my %data; load_hash("hoge.dat", \%data); print $data{hoge1}; 用例2 my $data = load_hash("hoge.dat"); print $data->{hoge1}; ※「区切り文字」には、実際にデータを区切っている文字を書いてください。質問では全角空白になっていましたが、実際には他の空白文字なのかもしれないので、このようにしました。 ※インデントに全角空白を使っているので、コピーする場合はタブなどに換えてください。

関連するQ&A