0

我有名为$A_cine、等的整数标量变量$B_cine

我还有一个子程序display,它接受一个参数'A', 'B','C'等。

$letter = $_[0]我在子程序中分配。我现在想获取$A_cineor的值$B_cine并将其分配给一个新的标量变量$cine

我已经尝试过$cine = '$'.$view."_cine",这被识别$cine为字符串$A_cine(它应该)。但是,有没有办法解释,所以我可以得到以前定义$A_cine的标量的数值?$A_cine

4

3 回答 3

8

使用符号引用是个坏主意。相反,您应该使用哈希。设置,说%cine和使用$cine{A}代替$A_cine等。然后你可以写

sub subroutine {
  my ($view) = @_;
  my $cine = $cine{$view};
  ...
}
于 2013-02-19T11:22:40.763 回答
7

您正在尝试构建符号引用

sub display {
    my $letter = $_[0];

    no strict 'refs';
    my $cine = ${ $letter . "_cine" };

    print $cine, "\n";  # for example
}

为此目的,使用散列几乎总是更好。有关详细信息,请参阅 Mark Dominus( Higher Order Perl的作者)的三部分系列,了解为什么使用符号引用可能是危险的。

于 2013-02-19T11:16:45.627 回答
4

您可以如上所示制作符号引用,但通常使用散列更容易

%cine={}
$cine{'A'}=37;
$letter="A"
print $cine{$letter}
于 2013-02-19T11:21:29.400 回答