在使用"strict refs"时,不能使用字符串("Server1")作为SCALAR ref

Rya*_*yan 3 perl scalar struct class

#!/usr/bin/perl -w
use strict;
use warnings;

use Class::Struct;

struct System => {
  Name => '$',
};

my $system = new System;
$system->Name("Server1");

my $strout1 = qq{Server is ${$system->Name}\n};
my $strout2 = "Server is \"".$system->Name."\"\n";

print $strout1;
print $strout2;
Run Code Online (Sandbox Code Playgroud)

结果是:

在test.pl第14行使用"strict refs"时,不能使用字符串("Server1")作为SCALAR ref.

我希望能够$system->Name正确使用qq和deref .谁能解释我哪里出错了?

cho*_*oba 5

方法调用不是用双引号字符串插值,而是取消引用.如果要插入方法调用的结果,则必须取消引用它的引用:

my $strout1 = qq{Server is ${\$system->Name}\n};
Run Code Online (Sandbox Code Playgroud)

  • 通常使用`"@ {[$ system-> Name]}"`代替 (2认同)