• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:モジュールのコンストラクタとスコープ)

モジュールのコンストラクタとスコープ

このQ&Aのポイント
  • perlのモジュールを使用する際のコンストラクタで
  • コンストラクタ内でリファレンスをインスタンスに与えた場合、同package内でデリファレンスできる
  • スコープは参照できるが値を保証しない

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

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

これは、q=817716 と同じ話ですよね? # 質問一覧の順に見てたので、質問順と回答順が逆になってしまいました^^; 答えから言えば、1です。 my によってメモリを確保し、リファレンスを保持しておくことでそのメモリを使いまわす、というのはよく使われる手法です。(仕組みについては q=817716 をご参照ください。) 「Perl クロージャ」あたりで検索してみると、何か情報が得られるかもしれません。 また、無名配列や無名ハッシュによって、my 変数を介さずにメモリを確保することもできます。(配列やハッシュだけですが。) 無名配列は [ ]、無名ハッシュは { } で生成します。 各カッコの中には初期値を入れることもでき、それぞれリファレンスを返すので、質問の @arr1 は使用せずに   my $self = {    member => "hoge",    arr => [ 1,2,3,4,5,6 ]   } と書くこともできます。(全く同じ結果となります。)

tamanegi_majin
質問者

お礼

q=817716 と同様にお返事いただきありがとうございます。二回も同じような質問をしてしまい、恥ずかしい限りです。 しかしperlは奥深いですね。 Cであれば許されないリファレンス(ポインタ)でも、perlは「都合よく」解釈してくれるんですね。 スコープに関する説明文書は多く見られるのですが、寿命に関しては見かけなくて困っていました。 ありがとうございます。

関連するQ&A