perl中的动态数组创建

时间:2015-08-21 21:53:35

标签: arrays perl foreach

我已阅读这篇文章,并发现有多种方法可以在perl中创建数组的动态命名。 http://en.allexperts.com/q/Perl-CGI-1045/dynamic-naming-array-1.htm

根据链接,代码将创建如下的动态数组:

@yearsSoFar2004, 
@yearsSoFar2005,                                                                               
@yearsSoFar2006 etc.

我的要求如下。我想创建一个像这样的动态数组:

my @a0=();
my @a1=();
my @a2=();
my @a3=();

我目前在我的代码中使用静态但我想让它变得动态。这是下面的静态代码。请帮帮我们。我是PERL的新手

my @a=();
my @b=();
my @c=();
my @d=();

2 个答案:

答案 0 :(得分:3)

您的请求有三个问题:

  1. my在编译时声明一个词法变量,因此要求在运行时将名称传递给my是没有意义的。
  2. 符号引用不能用于访问词法变量。
  3. It's a stupid thing to do

答案 1 :(得分:2)

  

我的要求如下。我想创建一个像这样的动态数组:

my @a0=();
my @a1=();
my @a2=();
my @a3=();

正如我之前所说,“When you find yourself adding an integer suffix to variable names, think I should have used an array.

所以,请使用

my @data = (
    [ ... ],
    [ ... ],
    [ ... ],
);

如果你想按年份索引每年的数据数据(而不是整数0,1,2,...,n),那么使用哈希:

my %data = (
    2005 => [ ... ],
    2006 => [ ... ],
    2007 => [ ... ],
);

你现在拥有的是compounded stupidity。不要那样做。