我正在研究一个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而不是在脚本内部也遇到了同样的问题。
答案 0 :(得分:0)
我相信打开文件的核心语法是:
my $file = "\\\\$myserver\\c\$\\$mydirectory\\$myfile";
open my $fh, '<', $file
or die "Cannot open $file for reading: $!";