我需要在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;
Run Code Online (Sandbox Code Playgroud)
所以我写了下面的代码片段
for(my $i=1; $i < 6; $i++ ) {
printmsg(@val$i, $msg$i) if @val$i;
}
Run Code Online (Sandbox Code Playgroud)
它不起作用并且会出错.
在Perl中,如果变量保存另一个变量的名称,如何使用第一个变量访问另一个变量?
例如,让我们
$name = "bob";
@bob = ("jerk", "perlfan");
Run Code Online (Sandbox Code Playgroud)
我该怎么用$ name来了解bob是什么样的人?虽然我不太确定,但我模糊的记忆告诉我它可能与typeglob有关.
不幸的是,我没弄明白,为什么$alfa仍然是空的:
use 5.014;
no strict 'refs';
my $berta = 5;
my $gamma = 'berta';
my $alfa = ${$gamma};
say "'$alfa'";
Run Code Online (Sandbox Code Playgroud)
必须是非常简单的事情...我期待$alfa成为5这里.我错过了什么?
下面的代码只适用于没有严格的代码.谁能建议一个更好的方法呢?
%hash5=('key5', 5);
my $hash_name = 'hash5';
print $$hash_name{'key5'}, "\n";
Run Code Online (Sandbox Code Playgroud)
我的目标:我不知道哈希名称.我只知道,它存储在变量$ hash_name中.人们一直在建议:
my $hashref = \%hashABC;
Run Code Online (Sandbox Code Playgroud)
这需要我知道哈希名称是'%hashABC'.在上面使用这个例子,我想做某事:
my $hash_name = 'hashABC';
my $hashref = \%$hash_name; # not possible, hope u get the aim
Run Code Online (Sandbox Code Playgroud)
现在我不再需要知道哈希的名字了.这就是我想要的.
很多人!(perl 5)