新規記事投稿 フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: Perlで質問
Date: 1997/01/10 00:02:15
Reference: mesh.program/00149

1月9日に、TADさんは書きました。

>Perlで '*'(アスタリスク)付の変数がたまにでてきますが、
>あれは何でしょう?('変数'じゃなかったりして...)
>
一般的に、手続き型言語で関数呼び出しなどをする時には、引数を値渡しする時と
名前(参照)渡しする時があるのはご存じですよね。perl での *変数 は名前渡しに
相当するものです。

とは言え実用言語(^^;; perl のこと、普通の言語とはひと味違っています。

関数を hoge(*a, *b) と呼び出し、関数の中で local(*x, *y) = @_; と引数を
もらうと、$x, $y は $a, $b として使えます。もちろん変更すれば反映されます。
マップされるのは何も $a だけでなく、@a は @x として、$a{} は $x{} として、
その他ファイルハンドルだろうが関数名だろうが何でも割り付けられます。
この機構を type grabbing と呼んでいます。