请教Perl老旧代码中$FILE与FILE的关系及运行原理
关于这段旧Perl代码中$FILE和FILE的关系
这段代码依赖的是Perl早期被废弃的隐式文件名打开特性,二者的具体关系如下:
$FILE是你定义的标量变量,存储着用户输入的文件名。FILE是文件句柄。在老版本Perl中,当调用open(FILE)且不传入额外参数时,Perl会自动查找与该文件句柄同名的包级标量变量——也就是这里的$FILE(默认包main中,$FILE等价于$main::FILE,和文件句柄FILE同名)。- 这段代码里的
open(FILE),底层等价于open(FILE, "<$FILE"):以读模式打开$FILE中存储的文件,并将文件句柄FILE与该文件关联。
这种写法完全依赖Perl早期的隐式行为,可读性和安全性都很差,现代Perl早已不推荐使用。规范写法应该显式声明打开模式和文件名,比如改成:
open(my $fh, '<', $FILE) or die "无法打开文件 $FILE: $!";
内容的提问来源于stack exchange,提问作者user3158810
相关产品推荐
相关产品推荐

