- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:自作関数への値の渡し方@_)
Perlで連想配列を渡す方法
このQ&Aのポイント
- Perlのサブルーチン内で連想配列を渡す方法は、サブルーチンの引数に連想配列を指定することで実現できます。
- 連想配列を渡す場合、サブルーチンの引数に連想配列名を指定するだけでなく、呼び出し元の連想配列をサブルーチン内で使用する際は、引数をスカラーコンテキストで受け取り、新たにローカルな連想配列に代入する必要があります。
- 具体的には、関数&func内で「@_ = ($hashref);」のようにして、引数をスカラーコンテキストで受け取ることで、連想配列をサブルーチン内で使用することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
もし、お使いの Perl がバージョン 4 なら、 &func(%ren); を &func(*ren); に変更し、func の方を sub func { local (*hash) = @_; $hash{satou} = "44"; } とします。 Perl 5 の場合、前述のコードでもできますが、普通は次のように my とリファレンスを使用します。 &func(%ren); を &func(\%ren); に変更し、func は sub func { my ($hashref) = @_; $hashref->{satou} = "44"; } とします。
お礼
Perlはたぶん5だと思いますが、 &func(*ren);と&func(\%ren);の違いに関係なく、 local (*hash) = @_; $hash{satou} = "44"; も my ($hashref) = @_; $hashref->{satou} = "44"; も成功しました。 ありがとうございました。