-2

好的,所以我有很多按数字顺序排列的变量。不幸的是,它们不在一个数组中。现在我需要对每个变量做一些工作,并且想知道这样做最聪明的方法是什么。我读过在变量名中使用变量是危险的,因为它会导致并发症。我在想下面这样的事情,但希望得到指导:)

my $var10
my $var20
my $var30
...
my $var300

For (my $t = 10; $t < 301; $t++){$var$t ...}

编辑:假设我想将这些变量推送到一个数组中。我将如何最好地进行?

4

3 回答 3

10

重构,使它们一个数组中。

于 2013-07-19T13:52:22.717 回答
0

您还可以使用哈希:

%h = ('var10' => 42, 'var20' => ...)
于 2013-07-19T13:57:05.420 回答
0

使用将所有变量的值拉入散列

my %var;
{
  for (1 .. 30) {
    my $n = $_ * 10;
    $var{$n} = eval "\$var$n";
  }
}

那么你就可以

for (1 .. 30) {
  my $t = $_ * 10;
  $var{$t}...
}

要不就

for my $t (sort { $a <=> $b } keys %var) {
  $var{$t}...
}

不要再这样做了!

于 2013-07-19T14:27:35.667 回答