【发布时间】:2016-01-16 10:48:14
【问题描述】:
这个脚本:
#!/usr/bin/perl
use strict;
use warnings;
my ${fh};
open($fh, '<', "some_file.txt") or die "fail\n";
while(my $line = <${fh}> ) {
print $line;
}
close $fh;
输出:
GLOB(0x5bcc2a0)
为什么是这个输出?
如果我将<${fh}> 更改为<$fh>,它将按预期逐行打印some_file.txt。我认为大括号可以用来分隔变量名,并且my ${var} 将与my $var 相同。
在变量名周围添加{} 是否会导致问题?
我在 Red Hat 和 Cygwin Perl 5.14 上尝试了 Perl 5.8.8。
【问题讨论】:
-
在很多情况下添加
{}会改变解析,例如"$foobar"与"${foo}bar"、"$foo::bar"与"${foo}::bar"、"$foo's bar"与"${foo}'s bar"、"$foo[0]"与"${foo}[0]"。但我猜你问的是字符串插值以外的情况? -
@ThisSuitIsBlack 不是你猜对的。答案也很好!
标签: perl