2016-05-15 81 views
1

我正在使用perl腳本,我需要檢查不同服務器上的多個遠程文件的內容。 裏面我的循環,我得到這個:perl - 安全地打開文件

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

這是工作的罰款,如果大部分的時間,但今天我有一個非常具體的問題。其中一臺服務器的Windows目錄已被刪除,無法響應。 我甚至無法殺死運行腳本的終端。 於是我開始了一種有超時在網上搜索,但經過長時間的搜尋後,我發現這一點:

上MSWin32阻塞I/O

報警(2)不中斷阻塞I/O在MSWin32上,所以'超時'也不會這樣做。

由於幾乎所有的解決方案都使用函數報警,我不知道如何防止我的腳本形式再次陷入困境。

ps:我試圖使用系統調用來打印文件,但我得到同樣的問題,甚至直接形成一個CMD,而不是腳本。

回答

0

我相信打開文件的corect語法是:

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

我不知道,實際上幫助的問題。 OP用來測試打開工作的方法很好 - 它只是阻塞,這也不起作用。 – Sobrique

+0

我同意你這是一個更優雅的方式來打開文件,但它與我的問題沒有關係 –