您好我已經閱讀了一些相關的問題似乎不幫助我。 這是一個將解釋我想要什麼的代碼。如何在Perl中使用索引名稱創建新變量?
for ($i=0;$i<5;$i++) {
my $new$i=$i;
print "\$new$i is $new$i";
}
期待的變量被命名爲$new0
,$new1
,$new2
,$new3
,$new4
,$new5
。 ,並有能力像使用print命令一樣在循環中使用它們。 感謝
eval
您好我已經閱讀了一些相關的問題似乎不幫助我。 這是一個將解釋我想要什麼的代碼。如何在Perl中使用索引名稱創建新變量?
for ($i=0;$i<5;$i++) {
my $new$i=$i;
print "\$new$i is $new$i";
}
期待的變量被命名爲$new0
,$new1
,$new2
,$new3
,$new4
,$new5
。 ,並有能力像使用print命令一樣在循環中使用它們。 感謝
eval
您想用hash or array代替。它允許數據集合保持在一起,並且會減少線路上的痛苦。
my %hash;
for my $i (0..4) {
$hash{$i} = $i;
print "\$hash{$i} is $hash{$i}\n";
}
改爲使用散列。
my %h=();
$new="test";
for ($i=0;$i<5;$i++) {
$h{"$new$i"}=$i;
}
while(my($key, $value) = each(%h)) {
print "$key,$value\n";
}
你在問一個常見問題。在99.9%的情況下,答案是不要這樣做。
這個問題很普遍,它在perlfaq7: How can I use a variable as a variable name?。
請參閱「How do I use symbolic references in Perl?」,以瞭解有關符號參考問題的大量討論。
想知道*爲什麼*或你打算如何使用結果 - 不會有散列就足夠了? –
你爲什麼不使用數組? '@news =(); (...){$ news [$ i] = $ i;打印$ news [$ i]; }' –
鑑於他使用的是數字索引,數組會更好。 –