Perlの小部屋

変数

データを一定期間記憶し必要なときに利用することができる値です。

値は文字列や数値で自由に名前を付けることができます。通常は※宣言が必要となりますが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;
}
# ここからは利用できない
ページトップ