• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[perl]メソッドの引数で受け取った配列データを直接編集したい)

[Perl]配列データを直接編集するための方法

このQ&Aのポイント
  • Perlを使って配列データを直接編集する方法について教えてください。
  • 特定のメソッド内で、受け取った配列データを編集する方法を教えてください。
  • 配列の要素を別のメソッドで変更することは可能でしょうか?方法を教えてください。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

(ぼそ) 「ポインタ」と「リファレンス」は同じものだと思っていい (endぼそ) 現状では サブルーチン sub_func で引数をいったん変数 $self, $array_ref にコピーし, この「コピーした」$array_ref を書き変える という動作です. コピーした時点で $_[0] と $self, $_[1] と $array_ref は「同じ値を持つ別の変数」です. だから, サブルーチン main の変数はどれも変化しません. ちなみに $_[1] = [4, 5, 6]; だと @data3 以外は書き変わります. まあ, これも妥当かな. ということで @$array_ref = (4, 5, 6); では?

mikane10
質問者

お礼

Tacosanさん、ご回答ありがとうございます。 「ポインタ」と「リファレンス」は多少違うものと認識していたので、こういったところで違ってくるのかと思ってました・・・。 $self, $_[1] と $array_ref は「同じ値を持つ別の変数」というのは認識していたのですが、なぜ引数で渡したアドレスをそのまま参照してくれないのか不思議でなりませんでした。 ご指摘の件、試してみたところ、正常に動作するようになりました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう