2012-09-05 41 views
1

我需要讀取/複製文件(test.pl)的內容,就像格式化併發送電子郵件一樣。perl無法複製文件的內容並打印它

我正在使用下面的代碼,但我無法打印任何東西。

即使文件存在於同一目錄中,我也會收到此錯誤。

Failed: No such file or directory 

代碼:

#!/usr/bin/perl 
use strict; 
use warnings; 
use DBI; 

open my $fh, '<', 'test.pl ' 
    or die "Failed: $!\n"; 

my $text = do { 
    local $/; 
    <$fh> 
}; 

close $fh 
    or die "Failed again: $!\n"; 

print $text, "\n"; 

回答

8

它看起來像有在你試圖打開文件名的額外空間。在您的公開聲明中,嘗試更改'test.pl ''test.pl'

+0

你是對的。一個額外的空間。 :-)一旦它允許我將在5分鐘內接受你的答案。 – Micheal

+1

如果你的'die'不僅包含錯誤,而且還包含對象的名稱,那麼更容易看到這種情況;即;我的$ file = q(test.pl);打開我的$ fh,'<',$ file或dise「無法打開'$ file':$!\ n」;在這個片段中,單引號限定了文件名,如果「open」失敗並且您更可能看到錯誤。 – JRFerguson

0

如果您要從STDIN(用戶輸入)讀取文件名,您可能希望通過使用正則表達式(s/^ \ s + // ....)或Text::Trim以及其他驗證來修剪它們。

+0

爲什麼要降票?我在哪裏錯了?至少說明一下。 – snoofkin

+0

downvote不是我的,但我會推測這是因爲你提供了建議,而不是直接回答這個問題。因此,對這個問題的評論會更合適。 – GreenMatt