この例では:
#!/usr/bin/perl
$a = 4; # Is $a a local variable or a global variable?
print $a, "\n";
$aにはどのようなスコープがありますか?
その特定の変数$a
は、 で使用される定義済みの変数ですsort
。ただし、使用した場合$x
は考慮されます
$main::x;
これは、メイン スクリプトであるパッケージ「main」内のグローバル変数です。
use strict
を使用する場合、常にそうすべきであることに注意してください。perl は、変数を使用する際に、具体的にすることを強制します。その場合、単に使用することはできません
$x = 4;
致命的な例外が生成されるため、Global symbol "$x" requires explicit package name at ...
通常はmy
orを使用our
して変数を宣言します。
my $x = 4;
ただし$main::x
、完全な変数名を指定する限り、使用することもできます。
[これまでに少し特別だったので(による使用のため) $x
、代わりに使用したふりをします。]$a
$a
sort
$ xaはローカル変数ですか、それともグローバル変数ですか?
Perlの2種類の変数は、字句とパッケージです。
宣言がない場合[1]、変数はパッケージ変数です[2]。それはあなたがそこに持っているものです。具体的には、これは省略形です$main::x
(main
コードがコンパイルされるパッケージはどこにありますか)。
パッケージ変数はグローバルです。つまり、コード内のどこからでも見ることができます。$main::x
とは言うものの、ある場所からそれらを見るには、フルネーム(例)を使用する必要があるかもしれません。
宣言されていない変数の使用を明確に禁止するものを常に使用する必要があるため、質問は言い回しのように学術的です。use strict;
一部の変数(たとえば$_
、、、$1
など$a
)は事前に宣言されているため、これは適用されません。