什么';在Perl中,这是什么意思?

什么';在Perl中,这是什么意思?,perl,Perl,似乎总是正确,版本是5.8.8 更新 我不是以root用户身份运行,而是为了隐私而更改的:)你是说从?您可能希望首先加载函数: [root@ ~]$ perl -e "print 1 if blessed $a;" 1 [root@ ~]$ perl -e "print 1 if blessed $c;" 1 [root@ ~]$ perl -e "print 1 if blessed $cee;" 1 否则,您的只是一个空字(字符串),这显然是正确的。如前所述,您需要在使用该方法之前加载模块

似乎总是
正确
,版本是
5.8.8

更新

我不是以root用户身份运行,而是为了隐私而更改的:)

你是说从?您可能希望首先加载函数:

[root@ ~]$ perl -e "print 1 if blessed $a;"
1
[root@ ~]$ perl -e "print 1 if blessed $c;"
1
[root@ ~]$ perl -e "print 1 if blessed $cee;"
1

否则,您的
只是一个空字(字符串),这显然是正确的。

如前所述,您需要在使用该方法之前加载模块。另外,如果您使用了
perl-we
而不是
perl-e
,您可能不会问这个问题

对于我来说,使用
perl-we
,我得到以下警告:

perl -MScalar::Util=blessed -e "print 1 if blessed $a;"

在Perl中不是关键字。在shell命令中使用双引号,因此变量(
$a
$c
等)来自shell环境,而不是Perl变量。 因为这些环境变量可能是空的,所以您实际上是在执行脚本

Can't call method "blessed" without a package or object reference at -e line 1.
像这样使用时,
befored
只是一个空字字符串,其计算结果总是true。你所做的和跑步没什么区别

print 1 if blessed ;

当您不知道它作为root用户的作用时运行代码可能不是最好的主意!你希望看到什么?可能是@Greg Hewgill的复制品,有什么不受祝福的吗?你说的这个“
受祝福的”
”是什么?你是说“?怎么能
祝福$a
被解释为bareword?bareword不作为字符串,因为
打印测试
不会输出
测试
@asker-
打印测试
不是一个很好的例子,因为它被解析为
打印测试$
(使用测试作为文件句柄)。尝试打印标准测试。但是无论如何,在你的例子中,
祝福
并不是空话,因为周围的环境(当祝福没有定义时,它被解释为
$a->祝福
)@asker,shell为
$a
插入一个空字符串,因此如果祝福
,代码就是
打印1,这与
打印1如果“祝福”是一样的
当strict处于关闭状态时。@bvr,它不会被解释为
$a->受祝福的
。这将导致运行时错误。看到我给asker的消息了吗?哎呀,我没有想到。由于引用,我假设OP在Windows上。这一点很好。或者更清楚地说,这就像运行
perl-e“print1 if'bleed'”
$ perl -e 'print 1 if foo'