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言語の文法と似ています。