Perl のlocal
構文に問題があります。
コードは以下のとおりです。
#!/usr/bin/perl -w
&outer;
sub outer {
local $lvar = 'local';
&inner;
}
sub inner {
print "lvar: $lvar\n";
}
コードを実行すると、次のように出力されます。
lvar: local
ただし、コードが次のように変更された場合:
#!/usr/bin/perl -w
use strict;
&outer;
sub outer {
local $lvar = 'local';
&inner;
}
sub inner {
print "lvar: $lvar\n";
}
次に、エラーが発生します。
Global symbol "$lvar" requires explicit package name at ./test.pl line 7.
Global symbol "$lvar" requires explicit package name at ./test.pl line 12.
Execution of ./test.pl aborted due to compilation errors.
私はここで混乱しています。のスコープを最小化したいし、ディレクティブ$lvar
も使いたい。strict
しかし、共存はできないようです。
use strict;
共存できますlocal
か?または、私は言いour $lvar
ましょうか?