変数
データを一定期間記憶し必要なときに利用することができる値です。
値は文字列や数値で自由に名前を付けることができます。通常は※宣言が必要となりますがPerlは省略もできます。
※値(この箱)には数値が入る変数・文字列が入る変数など
変数の宣言
変数の宣言です。Perlの変数はmyを使って宣言します。変数にはスカラ変数、配列変数、ハッシュ変数があります。
# スカラ変数
my $scalar;
# 配列変数
my @array;
# ハッシュ変数
my %hash;
#C言語では「変数の宣言」
#int 変数名
#整数型の箱ができます
スカラ変数
スカラ変数は、変数の中にたった一つの何らかの値を、含むことができます。
# スカラ変数
my $scalar;
$scalar = "tokyo"; #文字列
$scalar = 2019; #数値
# 配列へのリファレンス
$scalar = [ "A", "B", "C" ];
print @$scalar; # ABC
print $scalar->[0]; # A
# ハッシュへのリファレンス
$scalar = { scalar => "japan" };
$scalar = \%scalar;
print %$scalar; # scalarjapan
print $scalar->{scalar}; # japan
print ${ $scalar }{scalar}; # japan
print $$scalar{scalar}; # japan
#サブルーチンへのリファレンス
$scalar = sub { return 7 };
#未定義値
$scalar = undef;
配列変数
配列変数は複数の値を含むことができます。配列変数の「各要素」に含むことができるのは、スカラ変数のみです。
配列名の前に@を付けます。
#配列変数
@place = ('東京', '神奈川', '千葉', '茨城');
print @place[1]; # 神奈川
@year_value = (1960,1970,1980);
print @year_value[2]; # 1980
@Numeric1 = (1, 2, 3, 4, 5);
@Numeric2 = (1 .. 5);
#@Numeric1と@Numeric2は同じ内容
@Numeric3 = (2.5, 3.5, 4.5, 5.5);
@Numeric4 = (2.5 .. 5.5);
#@Numeric3と@Numeric4は同じ内容
ハッシュ変数
「キーと値」がセットになった複数の値を含みます。ハッシュ変数の「各要素」に含むことができるのは、スカラ変数のみです。
配列名の前に%を付けます。
#ハッシュ変数
my %token=('東京'=>'tokyo','神奈川'=>'kanagawa','埼玉'=>'saitama','千葉'=>'chiba','茨城'=>'ibaraki','栃木'=>'tochigi','群馬'=>'gunma');
$ken=$token{'東京'};
print $ken; # tokyo
配列型とハッシュ型の変換
#配列変数もハッシュ変数も、リストを内容として持つので、互いに変換可能です。
@array = %hash;
%hash = @array;
変数とスコープ
Perlのスコープは「{」で始まり「}」で終わります。Perlでは,myで宣言されたスコープをレキシカルスコープ宣言と呼びます。宣言が行われた場所から囲んでいる内側のスコープの最後までが有効範囲です。localやourで宣言することをグローバル宣言と呼びます。
#スコープ
{
# ここで宣言
my $num = 100;
}
# ここからは利用できない