我正在尝试做一些标量参考工作。这是我想要完成的任务的简化版本。我目前使用的是 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};
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top