我正在尝试做一些标量参考工作。这是我想要完成的简化版本。我目前正在使用perl 5.10.1。
注意:
*动态获取颜色
*试图说出100或红色值
*我意识到使用散列更容易完成,但我怎样才能使用标量?
$red = 100;
$blue = 150;
$green = 200;
$color = "red";
say ${$color};
当前错误= SCALAR ref而“strict refs”
答案 0 :(得分:3)
使用哈希,这就是他们的目的:
my %color_value = (
red => 100,
blue => 150,
green => 200,
);
$color = "red";
say $color_value{$color};
否则,您的错误被报告是因为您忘记了no strict "refs";
。但是请don't do that。
答案 1 :(得分:2)
除了已经给出的答案......
use strict;
use warnings;
use feature qw( say );
my $red = 100;
my $blue = 150;
my $green = 200;
my $color = \$red;
say ${$color};
答案 2 :(得分:0)
您收到的错误是由于use strict
。您需要关闭strict refs
。
no strict 'refs';
say ${"$color"}; # "" are optional, I want to show it's about the string
修改:请注意,这仅适用于全局变量。因此,您需要使用our
或use vars
而不是my
来声明它们。这在perlfaq7中有记录,并说明了为什么使用变量来命名其他变量不是一个好主意。
在某些情况下可以关闭strict
功能。但请记住,将它包含在非常有限的范围内是一种好习惯,因此它不会影响程序中最好不要关闭它的部分。
use strict;
use warnings;
use feature 'say';
our $red = 100;
our $blue = 150;
our $green = 200;
my $color = "red";
{
no strict 'refs'; # we need this to say the right color
say ${$color};
}
# more stuff here
另见: