在for循环中使用许多变量

时间:2013-07-19 13:50:36

标签: perl

好的,所以我有很多数字顺序的变量。不幸的是,它们不在阵列中。现在我需要对每个变量做一些工作,并想知道最聪明的方法是什么。我已经读过,使用变量名中的变量是危险的,因为它可能会导致并发症。我正在考虑下面这样的事情,但会很感激指导:)

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

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

编辑: 假设我想将这些变量推入数组中。我最好怎样进行?

3 个答案:

答案 0 :(得分:10)

重构,以便它们 在数组中。

答案 1 :(得分:0)

你也可以使用哈希:

%h = ('var10' => 42, 'var20' => ...)

答案 2 :(得分: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}...
}

再做一次!