【发布时间】:2014-07-10 11:53:21
【问题描述】:
全局定义一个数组,用一个子例程填充它,然后在脚本的另一部分访问它是不好的做法吗?例如,
use strict;
use warnings;
my @people = qw( Ted Bill Tom);
my @names;
&main;
sub main{
foreach(@people){
&fillNames;
}
}
sub fillNames {
undef @names;
print "$_\n";
push(@names,$_);
}
在上述情况下,我可以让子程序返回数组,但在我的程序中,我使用多个数组执行此操作(据我所知,子程序不能返回多个数组)。
我看到的另一种方法是创建一个文件,让子例程打印文件每个索引的数组内容,然后让主子例程访问该文件。这是更好的方法吗?
【问题讨论】:
-
在使用全局数组之前,我会返回一个数组引用列表。
-
如果要清空数组,请使用
@names = (); -
@names = get_names();会更好,并且还可以消除对全局的需要。 -
简短回答:除了常量之外,不要依赖全局变量。始终传递参数和返回值。这将引导您更好地设计程序,包括更好的可读性和可维护性。
标签: perl