嗨,我读过一些相关问题似乎没有帮助我。 这是一个可以解释我想要的代码。
for ($i=0;$i<5;$i++) {
my $new$i=$i;
print "\$new$i is $new$i";
}
期望变量命名为$new0
,$new1
,$new2
,$new3
,$new4
,$new5
。
并且像打印命令一样在循环中使用它们是非常有用的。
谢谢
答案 0 :(得分:18)
您想要使用hash or array代替。它允许将数据集合保持在一起,从而减少线下的痛苦。
my %hash;
for my $i (0..4) {
$hash{$i} = $i;
print "\$hash{$i} is $hash{$i}\n";
}
答案 1 :(得分:11)
你能描述为什么你需要做到这一点。 马克杰森多米纳斯写过为什么这样做不是一个好主意为什么“使用变量作为变量名称”是愚蠢的 part 1,part 2和part 3。
如果您认为您的需求是对此处描述的案例的例外情况,请告诉我们这里的人员可能会有所帮助。
答案 2 :(得分:9)
你问的是一个常见的问题。 99.9%的案例中的答案是不要那样。
这个问题非常普遍,它位于perlfaq7: How can I use a variable as a variable name?。
有关符号引用问题的大量讨论,请参阅“How do I use symbolic references in Perl?”。
答案 3 :(得分:2)
使用哈希代替。
my %h=();
$new="test";
for ($i=0;$i<5;$i++) {
$h{"$new$i"}=$i;
}
while( my( $key, $value ) = each( %h ) ) {
print "$key,$value\n";
}
答案 4 :(得分:-4)
如果你想创建像$ newN这样的变量,你可以使用eval
:
eval("\$new$i=$i");
(使用哈希可能会更好)