好的,所以我有很多按数字顺序排列的变量。不幸的是,它们不在一个数组中。现在我需要对每个变量做一些工作,并且想知道这样做最聪明的方法是什么。我读过在变量名中使用变量是危险的,因为它会导致并发症。我在想下面这样的事情,但希望得到指导:)
my $var10
my $var20
my $var30
...
my $var300
For (my $t = 10; $t < 301; $t++){$var$t ...}
编辑:假设我想将这些变量推送到一个数组中。我将如何最好地进行?
好的,所以我有很多按数字顺序排列的变量。不幸的是,它们不在一个数组中。现在我需要对每个变量做一些工作,并且想知道这样做最聪明的方法是什么。我读过在变量名中使用变量是危险的,因为它会导致并发症。我在想下面这样的事情,但希望得到指导:)
my $var10
my $var20
my $var30
...
my $var300
For (my $t = 10; $t < 301; $t++){$var$t ...}
编辑:假设我想将这些变量推送到一个数组中。我将如何最好地进行?
重构,使它们在一个数组中。
您还可以使用哈希:
%h = ('var10' => 42, 'var20' => ...)
使用将所有变量的值拉入散列
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}...
}
但不要再这样做了!