Perl标量参考

时间:2014-06-04 21:36:37

标签: perl reference scalar

我正在尝试做一些标量参考工作。这是我想要完成的简化版本。我目前正在使用perl 5.10.1。

注意:

*动态获取颜色

*试图说出100或红色值

*我意识到使用散列更容易完成,但我怎样才能使用标量?

$red = 100;
$blue = 150;
$green = 200;

$color = "red";

say ${$color};

当前错误= SCALAR ref而“strict refs”

3 个答案:

答案 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

修改:请注意,这仅适用于全局变量。因此,您需要使用ouruse 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

另见:

相关问题