首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl中,BAREWORD和*BAREWORD有什么区别?

在Perl中,BAREWORD和*BAREWORD有什么区别?
EN

Stack Overflow用户
提问于 2011-09-20 13:34:27
回答 1查看 307关注 0票数 7
代码语言:javascript
复制
my $childpid = open3(HIS_IN, HIS_OUT, HIS_ERR, $cmd, @args);

my $childpid = open3(*HIS_IN, *HIS_OUT, *HIS_ERR, $cmd, @args);

以上两种方法似乎都适用于我的应用程序。

Perl语言中的BAREWORD*BAREWORD有什么不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-20 13:42:14

光字的意思是不同的。在大多数情况下,赤字是一个函数调用。

代码语言:javascript
复制
sub foo { say "Hello"; }
foo;

有时,它是一个字符串文字。

代码语言:javascript
复制
$x{foo}    # $x{"foo"}

在其他情况下,它会生成一个typeglob。

代码语言:javascript
复制
print STDOUT "foo";   # print { *STDOUT } "foo";

在这种情况下,

代码语言:javascript
复制
open3(HIS_IN, HIS_OUT, HIS_ERR, ...)

等同于

代码语言:javascript
复制
open3("HIS_IN", "HIS_OUT", "HIS_ERR", ...)

但是open3使用该字符串作为调用者的包中glob的名称,因此上面的代码在功能上等同于

代码语言:javascript
复制
open3(*HIS_IN, *IS_OUT, *HIS_ERR, ...)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7480569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档