gpt4 book ai didi

perl - 如何在 Perl 中使用变量作为变量名?

转载 作者:行者123 更新时间:2023-12-03 22:51:07 28 4
gpt4 key购买 nike

我需要在 perl 中实现以下目标

printmsg(@val1, $msg1) if @val1;
printmsg(@val2, $msg2) if @val2;
printmsg(@val3, $msg3) if @val3;
printmsg(@val4, $msg4) if @val4;
printmsg(@val5, $msg5) if @val5;
printmsg(@val6, $msg6) if @val6;

所以我写了以下片段
for(my $i=1; $i < 6; $i++ ) {
printmsg(@val$i, $msg$i) if @val$i;
}

它不起作用并且出现错误。

最佳答案

Whenever you find yourself postfixing variable names with an integer index ,意识到您应该使用数组来代替:

my @msgs = ('msg1', 'msg2', ..., 'msg6');
my @vals = ( [ @val1 ], [ @val2 ], ..., [ @val6 ] );

另见常见问题 How can I use a variable as a variable name?

正如常见问题解答的答案所指出的,如果变量不是由整数索引的,则可以使用哈希表:

By using symbolic references, you are just using the package's symbol-table hash (like %main::) instead of a user-defined hash. The solution is to use your own hash or a real reference instead.

$USER_VARS{"fred"} = 23;
my $varname = "fred";
$USER_VARS{$varname}++; # not $$varname++


您应该至少每年阅读一次完整的常见问题列表。

更新:我故意将符号引用从我的答案中排除,因为它们在您的问题的上下文中是不必要的并且可能非常有害。如需更多信息,请参阅 Why it's stupid to 'use a variable as a variable name'? , part 2part 3来自 mjd .

关于perl - 如何在 Perl 中使用变量作为变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1549685/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com