Perlは単独のスコープがC言語と同じように使える
Perlは単独のスコープがC言語と同じように使えます。単独のスコープというのは、if文やfor文やwhile文と組み合わせて存在するスコープではなく、単独で定義できるスコープで、変数にスコープを与えることができるものをいいます。
Perlの単独のスコープ
Perlの単独のスコープです。
{
my $foo = 1;
}
C言語の単独のスコープ
C言語の単独のスコープです。
{
int32_t foo = 1;
}
Perlの単独のスコープとC言語の単独のスコープの比較
Perlの単独のスコープとC言語の単独のスコープの比較してみましょう。「{}」という記号で、スコープを作ることができます。
単独のスコープの活用法
単独のスコープは、そのスコープの中だけで、有効な変数を宣言することができるので、以下のような書き方ができて、便利です。入れ子にすることもできます。
{
my $foo = 5;
{
my $foo = 1;
}
{
my $foo = 2;
}
{
my $foo = 3;
}
}
Perlの場合は、リファレンスカウント式のGCなので、スコープの終わりで、変数を解放してくれるという効果もあります。
単独のスコープは、試験を書くときに非常に効果を発揮します。試験は、ほとんど同じことを、少しづつ変えて、何回も記述する作業だからです。サブルーチンを定義しないで、新しいスコープを記述できるというのは、とても便利なのです。
# テスト1
{
my $baz = "abc";
# テスト1 - サブテスト1
{
my $foo = 1;
# ごにょ
is($foo, 5);
}
# テスト1 - サブテスト2
{
my $foo = 3;
# ごにょ
is($foo, 10);
}
# テスト1 - サブテスト3
{
my $foo = 10;
# ごにょ
is($foo, -5);
}
}
# テスト2
{
my $baz = "def";
# テスト2 - サブテスト1
{
my $bar = 2;
# ごにょ
is($bar, 3);
}
# テスト2 - サブテスト2
{
my $bar = 3;
# ごにょ
is($bar, 45);
}
# テスト2 - サブテスト3
{
my $bar = 20;
# ごにょ
is($bar, -19);
}
}
PerlとC言語の他の類似点
この記事では、Perlの単独のスコープがC言語と似ているということを書きましたが、Perlのif文、for文、while文、インクリメント/デクリメント、演算子の優先順位、スコープ、参照概念も、C言語の文法と似ています。
Perlの哲学