Perl 変数

変数はメモリに格納されるデータであり、変数を作成するとメモリ上に領域が確保されます。

インタープリタは変数の型に基づいてメモリ上の記憶領域を決定します。そのため、整数型、浮動小数点型、文字列などのさまざまなデータ型を変数に割り当てることができます。

前の章では、Perlの3つの基本データ型(スカラー、配列、ハッシュ)を紹介しました。

    スカラーは $ で始まります。 $a $b は2つのスカラーです。
  • 配列は @ で始まります。 @a @b は2つの配列です。
  • ハッシュは % で始まります。 %a %b は2つのハッシュです。

Perlは各変数型に対して独立した名前空間を設定しているため、異なる型の変数は同じ名前を使用でき、衝突を心配する必要はありません。例えば、$foo と @foo は異なる変数です。


変数の作成

変数は型を明示的に宣言する必要はなく、変数に値を代入すると、インタープリタが自動的に一致する型の領域を割り当てます。

変数への代入には等号(=)を使用します。

プログラム内でuse strict文を使用して、すべての変数に型の明示的な宣言を必須にできます。

等号の左側は変数、右側は値です。例は以下のとおりです:

$age = 25;             # 整型
$name = "サンプル";      # 字符串
$salary = 1445.50;     # 浮点数

上記のコードでは、25、"サンプル"、1445.50 はそれぞれ$age, $nameと$salary変数に代入されます。

次に、配列とハッシュの使用法を見ていきます。


スカラー変数

スカラーは単一のデータユニットです。データは整数、浮動小数点数、文字、文字列、段落などです。簡単に言えば、それは何でもあり得ます。以下はスカラーの簡単な応用です:

例

#!/usr/bin/perl $age = 25; # 整数型 $name = "サンプル"; # 文字列 $salary = 1445.50; # 浮動小数点数 print "Age = $age\n"; print "Name = $name\n"; print "Salary = $salary\n";

上記プログラムの実行出力結果は次のとおりです:

Age = 25
Name = サンプル
Salary = 1445.5

配列変数

配列は、順序付けられたスカラー値のリストを格納するための変数です。

配列は @ で始まります。

配列の変数にアクセスするには、ドル記号($)+変数名を使用し、添え字を指定してアクセスします。例は以下のとおりです:

例

#!/usr/bin/perl @ages = (25, 30, 40); @names = ("google", "サンプル", "taobao"); print "\$ages[0] = $ages[0]\n"; print "\$ages[1] = $ages[1]\n"; print "\$ages[2] = $ages[2]\n"; print "\$names[0] = $names[0]\n"; print "\$names[1] = $names[1]\n"; print "\$names[2] = $names[2]\n";

上記プログラムの実行出力結果は次のとおりです:

$ages[0] = 25
$ages[1] = 30
$ages[2] = 40
$names[0] = google
$names[1] = サンプル
$names[2] = taobao

プログラムでは、$ 記号の前にエスケープ文字 (\) を使用しています。これにより、文字 $ を出力できます。


ハッシュ変数

ハッシュはkey/valueペアの集合です。

ハッシュは % で始まります。

ハッシュ値にアクセスする場合は、$ + {key}次の形式でアクセスできます:

例

#!/usr/bin/perl %data = ('google', 45, 'サンプル', 30, 'taobao', 40); print "\$data{'google'} = $data{'google'}\n"; print "\$data{'サンプル'} = $data{'サンプル'}\n"; print "\$data{'taobao'} = $data{'taobao'}\n";

上記プログラムの実行出力結果は次のとおりです:

$data{'google'} = 45
$data{'サンプル'} = 30
$data{'taobao'} = 40

変数コンテキスト

いわゆるコンテキストとは、式が置かれている位置のことを指します。

コンテキストは等号の左側の変数型によって決まります。等号の左側がスカラーならスカラーコンテキスト、等号の左側がリストならリストコンテキストです。

Perl インタープリタはコンテキストに基づいて変数の型を決定します。例は以下のとおりです:

例

#!/usr/bin/perl @names = ('google', 'サンプル', 'taobao'); @copy = @names; # 配列をコピー $size = @names; # 配列をスカラーに代入すると、配列の要素数が返される print "名前 : @copy\n"; print "名前の数 :$size\n";

上記プログラムの実行出力結果は次のとおりです:

名字为 : google サンプル taobao
名字数为 : 3

コード内の @names は配列で、2つの異なるコンテキストで使用されています。1つ目は別の配列にコピーするため、配列のすべての要素を出力します。2つ目は配列をスカラーに代入するため、配列の要素数を返します。

以下に、さまざまなコンテキストを示します:

番号 コンテキストと説明
1 スカラー −

スカラー変数に代入され、スカラーコンテキストの右側で評価されます。

2 リスト −

配列またはハッシュに代入され、リストコンテキストの右側で評価されます。

3 ブール −

ブールコンテキストは単純な式の評価であり、true か false かを調べます。

4 Void −

このコンテキストでは戻り値を気にする必要はなく、通常は戻り値は必要ありません。

5 補間 −

このコンテキストは引用符内でのみ発生します。

その他の拡張