首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能在Perl中的菱形操作符中使用一个类型Perl呢?

为什么我不能在Perl中的菱形操作符中使用一个类型Perl呢?
EN

Stack Overflow用户
提问于 2015-01-29 07:16:12
回答 2查看 128关注 0票数 2

通常,作为filehanle或包含文件句柄的变量,赤字可能是<>操作符中用于引用文件的位置,但不是--从typeglob提取的文件句柄,如下面最后一行所示。为什么它不能工作,因为最后一个案例也引用了一个文件句柄?

代码语言:javascript
复制
open FILE, 'file.txt';
my $myfile = *FILE{IO};
print <$myfile>;
print <*FILE{IO}>; # this line doesn't work.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-29 07:31:57

佩洛普中,它说:

如果尖括号中的内容既不是文件句柄,也不是包含文件句柄名称、类型globbed或类型globbed引用的简单标量变量,则将其解释为要被全局化的文件名模式。

既然我们想说出这样的话:

代码语言:javascript
复制
foreach (<*.c>) {
  # Do something for each file that matches *.c
}

perl不可能将“*”解释为一种类型词。

正如在另一个答案中所指出的,您可以使用readline来解决这个问题,或者您可以首先将类型shows分配给标量(如您的示例所示)。

票数 3
EN

Stack Overflow用户

发布于 2015-01-29 07:18:24

<>readline()的快捷方式之一,它接受简单的标量或裸露的单词,即。<FILE>。对于更复杂的表达式,您必须更加明确,

代码语言:javascript
复制
print readline *FILE{IO};

否则它将被解释为glob()

代码语言:javascript
复制
perl -MO=Deparse -e 'print <*FILE{IO}>;'

use File::Glob ();
print glob('*FILE{IO}');
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28208970

复制
相关文章

相似问题

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