2010-01-25 36 views
3

我試着放置${date[0]}在我的目錄,相當於01252010@hits不打印。我如何設法打開目錄以獲得所需的輸出?謝謝。爲什麼我的Perl open()失敗,並顯示「包含換行符的文件名不成功」?

錯誤:在./total.pl行11對含換行符的文件名 不成功開放,1號線

#!/opt/perl/bin/perl -w 

use strict; 

open(FH,"/home/daily/scripts/sms_hourly_stats/date.txt"); 
my @date = <FH>; 
print $date[0]; 

my $path = "/home/daily/output/sms_hourly_stats/${date[0]}/TOTAL.txt"; 
open(FILE,"$path") or die "Unable to open $path: $!"; 
my @hits = <FILE>; 
print @hits; 

close FH; 
close FILE; 
+1

收聽您的錯誤消息。它說你有一個帶有換行符的文件名,所以看看$ path並向後走,直到找到新行顯示的位置。 :) – 2010-01-25 17:34:48

+0

明亮的頭腦在這個網站見面:-)希望在proggamming更好!謝謝! – Shiel 2010-01-26 05:04:21

回答

5

您需要刪除行結束符。使用chomp

chomp(my @date = <FH>); 
+1

或者您也可以編寫chomp(@date = ) – bertolami 2010-01-25 08:50:38

+0

仍無法打開/home/sudo724/reports/daily/output/sms_hourly_stats/1/TOTAL.txt $ {date [0]}的值爲1 ?謝謝。 – Shiel 2010-01-25 08:56:35

+1

我想我得到了它已經在使用格格(我的@日期= )。非常感謝你:-) – Shiel 2010-01-25 09:02:19

0
  1. 使用格格上了值,伊萬建議
  2. 你在哪裏找到的語法$ {日期[0]}?使用$ date [0]。
+1

正如我在許多腳本遇到過,有$ {日期[0]}和$日期[0]特別是在處理或串聯的數字之間的差異?像 $ num個[0] = 3 家/目錄/ 2009 $ {NUM [0]} 0表示30 家/目錄/ 2009 $ num個[0] 0這是錯誤? – Shiel 2010-01-25 09:15:55

+1

$ {date [0]}在內插的上下文中是「更安全」的,但在這裏並不是必須的。如果你有一個複雜的表達式來擴展插入的字符串,它會更有用。 – 2010-01-25 13:53:11

0
#!/opt/perl/bin/perl -w 

use strict; 

open(FH,"/home/daily/scripts/sms_hourly_stats/date.txt"); 
my @date = <FH>; 
my $dir; 
print ${date[0]}; 
chomp($dir = ${date[0]}); 


my $path = "/home/daily/output/sms_hourly_stats/$dir/TOTAL.txt"; 
open(FILE,"$path") or die "Unable to open $path: $!"; 
my @hits = <FILE>; 
print @hits; 

close FH; 
close FILE; 
相關問題