题
我正在尝试做一些标量参考工作。这是我想要完成的任务的简化版本。我目前使用的是 perl 5.10.1。
笔记:
*颜色是动态获取的
*尝试获得 100 或红色值
*我意识到使用哈希更容易完成,但是我如何使用标量来完成呢?
$red = 100;
$blue = 150;
$green = 200;
$color = "red";
say ${$color};
当前误差 = SCALAR ref 而“严格参考”
解决方案
您收到的错误是由于 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
也可以看看:
其他提示
使用哈希,这就是它们的:
my %color_value = (
red => 100,
blue => 150,
green => 200,
);
$color = "red";
say $color_value{$color};
.
否则,报告了您的错误,因为您刚忘记了 no strict "refs";
。但请不做那个
除了已经给出的答案...
use strict;
use warnings;
use feature qw( say );
my $red = 100;
my $blue = 150;
my $green = 200;
my $color = \$red;
say ${$color};
. 不隶属于 StackOverflow