perl - 安全地打开文件

时间:2016-05-15 12:37:51

标签: windows perl file timeout

我正在研究一个Perl脚本,我需要检查不同服务器上的多个远程文件的内容。 在我的循环中我得到了这个:

my $file = "\\\\$myserver\\c\$\\$mydirectory\\$myfile";
if (open (FILE, "<", $file))
{
    # do some work
    close (FILE);
}

大部分时间这都很好,但今天我遇到了一个非常具体的问题。其中一台服务器删除了他的Windows目录并且没有响应。 我甚至无法杀死运行脚本的终端。 所以我开始在网上搜索一种添加超时的方法,但经过长时间的搜索我发现了这个:

  

阻止MSWin32上的I / O

     

alarm(2)不会在MSWin32上中断阻塞I / O,因此&#39; timeout&#39;也不会那样做。

由于几乎所有解决方案都使用函数报警,因此我不知道如何防止我的脚本再次卡住。

ps:我尝试使用系统调用来打印文件,但我甚至直接从cmd而不是在脚本内部也遇到了同样的问题。

1 个答案:

答案 0 :(得分:0)

我相信打开文件的核心语法是:

 my $file = "\\\\$myserver\\c\$\\$mydirectory\\$myfile";
 open my $fh, '<', $file
     or die "Cannot open $file for reading: $!";