• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PARL言語のリファレンスの解釈は?)

Perlのリファレンスとは?

このQ&Aのポイント
  • Perlのリファレンスとは、機械語のメモリアドレス(番地)を表すものです。
  • 配列のリファレンスを使用すると、配列のメモリ領域が確保されます。
  • スカラー変数には1つのデータが入るため、5個のデータは入りません。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

カテゴリーにも書いてありますが「Perl」です。 もし「Parl」という私の知らない言語なら、以下の話は無視してください。 少しだけ正しい、といったところでしょうか。 リファレンスは、機械語で例えれば、番地のようなものです。 ただ、もっと抽象的なものです。リファレンスを辿ると、参照先へアクセスできるような、なんらかの情報、くらいのものです。 実際に何が記録されているかは、ソースを読めば解るでしょうが、Perlの処理系自体を開発するのでなければ、考えなくてもいいものです。 あと、 > 配列@arrayの番地は、5個ぶんのメモリ領域が確保されるのでしょうか? > そしてスカラー$ref_arrayに代入される番地は、 > その5個ぶんの番地の先頭番地でしょうか? > (スカラー変数1つに、5個のデータは入らないですよね?) とか書いているのを見ると、機械語やC言語のような考えがあるようですが、Perlではもっと抽象的に考えてください。 順番にならんだ直線ではなく、大小関係のない面や立体的な空間の中に変数領域があるような。

MSX1
質問者

お礼

失礼しました、「PERL」でした、単なるスペルミスです。 「reference=抽象参照」とでも訳すべきでしょうか、 考えなくてもよい要素を勝手に自己解釈していました。 抽象的にとどめているぶん、逆に難しい概念ですね。 なんとなくわかりましたが、まだまだ勉強していきます。 ありがとうございました。

その他の回答 (1)

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

まず「リファレンス」というのは「何かを参照するための情報」でしかありませんから, それが「アドレスである」とは限りません. でも, 「画面上16進数の番地等は表に出てこないようですが・・」というのは, どう試したんだろう. もう 1点. @array = (1, 2, 3, 4, 5); とした場合に, 「配列@arrayの番地は、5個ぶんのメモリ領域が確保される」とは限りません. あとで push や unshift のような操作をすることもあるので, 一般的にはもっと多めに確保しているはずです.

MSX1
質問者

お礼

ご指南ありがとうございます。 下記のように、デリファレンス演算子$を重ねずに リファレンスをprint関数処理すると、 6桁の16進数が画面表示されますが、 これがメモリアドレスかと思いましたが、 そうとは限らないのですね。 $word = "A"; $ref_word = \$word; print $ref_word, "\n"; (実行結果) SCALAR(0xa29e0c)

関連するQ&A