簡體   English   中英

如何在Perl中使用索引名稱創建新變量?

[英]How do I create new variables with indexed names in Perl?

您好,我讀過一些相關的問題,似乎對我沒有幫助。 這是一個代碼,將解釋我想要什么。

for ($i=0;$i<5;$i++) {
  my $new$i=$i;
  print "\$new$i is $new$i";
}

期望變量被命名為$new0$new1$new2$new3$new4$new5 並有能力像print命令一樣在循環中使用它們。 謝謝

您想改用哈希或數組 它可以使數據收集保持在一起,從而減少生產過程中的痛苦。

my %hash;
for my $i (0..4) {
    $hash{$i} = $i;
    print "\$hash{$i} is $hash{$i}\n";
}

您能描述為什么確實需要這樣做嗎? 馬克·傑森·多米納斯(Mark Jason Dominus)在第1 部分第2 部分第3 部分 “為什么將變量用作變量名”中很愚蠢,為什么這樣做不是一個好主意。

如果您認為自己的需求是此處所述案例的例外,請告訴我們如何做,這里的人可能會有所幫助。

您在問一個常見問題。 在99.9%的情況下,答案是“ 不要做”

這個問題是如此普遍,以至於出現在perlfaq7中:如何使用變量作為變量名?

有關符號引用問題的大量討論,請參見“ 如何在Perl中使用符號引用? ”。

使用哈希代替。

my %h=();
$new="test";
for ($i=0;$i<5;$i++) {
  $h{"$new$i"}=$i;
}
while( my( $key, $value ) = each( %h ) ) {
    print "$key,$value\n";
}

如果要創建$ newN這樣的變量,可以使用eval

eval("\$new$i=$i");

(使用哈希可能會更好)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM