- ベストアンサー
サブルーチンでファイルの内容をハッシュに格納したい。
次のようなファイルA.txtが有った場合に、ファイルを読み込んで、その内容をハッシュに展開したいと考えています。できれば、サブルーチン化して、引数で渡したハッシュに格納したいのですが、どうすればよいでしょうか? 教えてください。 ----- hoge1 10 hoge2 20 hoge3 30
- みんなの回答 (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}; ※「区切り文字」には、実際にデータを区切っている文字を書いてください。質問では全角空白になっていましたが、実際には他の空白文字なのかもしれないので、このようにしました。 ※インデントに全角空白を使っているので、コピーする場合はタブなどに換えてください。