• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:自作関数への値の渡し方@_)

Perlで連想配列を渡す方法

このQ&Aのポイント
  • Perlのサブルーチン内で連想配列を渡す方法は、サブルーチンの引数に連想配列を指定することで実現できます。
  • 連想配列を渡す場合、サブルーチンの引数に連想配列名を指定するだけでなく、呼び出し元の連想配列をサブルーチン内で使用する際は、引数をスカラーコンテキストで受け取り、新たにローカルな連想配列に代入する必要があります。
  • 具体的には、関数&func内で「@_ = ($hashref);」のようにして、引数をスカラーコンテキストで受け取ることで、連想配列をサブルーチン内で使用することができます。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.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";  } とします。

nwycuar
質問者

お礼

Perlはたぶん5だと思いますが、 &func(*ren);と&func(\%ren);の違いに関係なく、 local (*hash) = @_; $hash{satou} = "44"; も my ($hashref) = @_; $hashref->{satou} = "44"; も成功しました。 ありがとうございました。

関連するQ&A