4
#!/usr/local/bin/perl
sub trial
{
    open (LOGFILE, 'C:\Users\out.txt');
    trial();
}
trial();

请忽略它会进入无限循环。

文件句柄LOGFILE是本地的还是私有的?如果没有,我怎样才能将其设为私有/本地?我知道的. 但我不知道如何在文件句柄上使用它。

4

2 回答 2

10

这些文件句柄是全局的,因为它们是typeglobs。这有时会导致非常糟糕的意外,因为您可能会意外覆盖在您正在使用的某个模块中定义的此类文件句柄。

如果你想要词法文件句柄,my像这样定义它们:

open my $fh, '<', 'C:\Users\out.txt';

也可以看看:

于 2012-09-27T08:42:44.860 回答
4

词法文件句柄只是标准的my标量。请参阅perldoc 中open的示例以获取.

open (my $logfile, 'C:\Users\out.txt');

一般来说,三自变量形式open也是首选:

open (my $logfile, '<', 'C:\Users\out.txt');
于 2012-09-27T08:42:35.000 回答