【发布时间】:2012-09-20 14:14:36
【问题描述】:
如果我不use strict;,下面的代码可以正常工作并打印出“alice”:
assign_name();
print_name();
sub assign_name {
$name = "alice";
}
sub print_name {
print $name;
}
但是,当我执行use strict; 时,我知道我必须在使用变量之前声明它。我在某处读到我应该使用our 而不是my 来声明一个全局变量。所以我有以下内容:
use strict;
use warnings;
assign_name();
print_name();
sub assign_name {
our $name = "alice";
}
sub print_name {
print $name; # This is line 12.
}
然后我得到以下错误:
Variable "$name" is not imported at test.pl line 12.
Global symbol "$name" requires explicit package name at test.pl line 12.
Execution of test.pl aborted due to compilation errors.
请帮忙。
【问题讨论】:
-
你应该避免使用全局变量。它将使您的代码更易于阅读,并避免简单的错误。
-
我还想说,对你有好处的用户!使用
strict是一个好主意,而且当新的Perlers 发现使用它时某些东西不起作用时,他们常常很快就放弃它。很好地询问您的代码为什么不起作用并学习正确地执行它! :-)
标签: perl use-strict