好的,所以我有很多数字顺序的变量。不幸的是,它们不在阵列中。现在我需要对每个变量做一些工作,并想知道最聪明的方法是什么。我已经读过,使用变量名中的变量是危险的,因为它可能会导致并发症。我正在考虑下面这样的事情,但会很感激指导:)
my $var10
my $var20
my $var30
...
my $var300
For (my $t = 10; $t < 301; $t++){$var$t ...}
编辑: 假设我想将这些变量推入数组中。我最好怎样进行?
答案 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}...
}
但不再做一次!