Go to the first, previous, next, last section, table of contents.


変数名

Perl には、スカラ、スカラの配列、「ハッシュ」とも呼ばれるスカラの 連想配列という 3 つのデータ構造があります。通常の配列は 0 を基点とする数 値でインデクスされます。(負の添字は、配列の終わりからインデクスします。) ハッシュ配列は、文字列でインデクスされます。

スカラ値の参照は、配列の一要素であるスカラを参照する場合でも、常に名前に `$' を付けます。以下のようなものが使えます:

$days               # 単純なスカラ変数 "days" の値
$days[28]           # 配列 @days の 29 番目の要素の値
$days{'Feb'}        # ハッシュ %days の 'Feb' の値
$#days              # 配列 @days の最後のインデクス値

ただし、配列全体や配列のスライスは `@' で示します:

@days               # ($days[0], $days[1],..., $days[n])
@days[3,4,5]        # @days[3..5] と同じ
@days{'a','c'}      # ($days{'a'},$days{'c'}) と同じ

ハッシュ全体は `%' で示します:

%days               # (key1, val1, key2, val2,...)

さらに、サブルーティンは名前の前に `&' を付けて示しますが、曖昧にな らなければ、(英語でもほとんど使われなくなった do のように)省略する ことができます。シンボルテーブルのエントリは、名前に `*' を付けて示 すことができますが、使用に際しては十分に注意する必要があります。

変数のすべての型には、それぞれの名前空間があります。衝突を心配せずに、ス カラ変数、配列、ハッシュ (ついでにファイルハンドルやサブルーティン名、ラ ベル) に、同じ名前を付けることができます。つまり、`$foo'`@foo' は2つの異なる変数であるということです。また、`$foo[1]'`@foo' の一部であって、`$foo' の一部ではありません。奇妙に 思えるかもしれませんが、それで良いのです。奇妙なのですから。

変数と配列の参照は、いつも `$'`@'`%' で始まりますか ら、「予約」語は、変数名としては、本当の意味で予約されているわけではあり ません。(しかしながら、先頭に特別な文字を付けない、ラベルやファイルハン ドルとしては、予約されていることになります。たとえば、`log' といっ た名前のファイルハンドルを使うことはできません。ヒント: open(log,'logfile') などではなく、open(LOG,'logfile') とし てください。大文字のファイルハンドルを使えば、読みやすくもなりますし、将 来に渡る予約語との衝突も避けられます。大文字と小文字は区別されますから、 `FOO'`Foo'`foo' は、すべて違う名前です。英字と下線で 始まる名前は、名前の一部に数字や下線を含むことができます。

そのような英数字の名前を、その型のオブジェクトへのリファレンスを返す式で 置き換えることも可能です。詳しくは、See section リファレンスとデータ構造のネスト, を参照してください。

数字で始まる名前には、数字しか含めることができません。英字、下線、数字以 外の文字で始まる名前は、$%$$ のように 1 文字に限定され ます。(これら 1 文字の名前の多くは、Perl があらかじめ意味を定めています。 たとえば、$$ はカレントプロセスのプロセス id を示します。) (訳注: $^A など 2 文字が続く変数が Version 3 の終わり頃から、いくつかで きています。ただし、^A の 2 文字を control-A の1 文字 (16 進数の 0x01) で置き換えることも可能です。)


Go to the first, previous, next, last section, table of contents.

検索式: