2012-08-16 34 views
0

我寫了一個應用一些unix命令的Perl包裝器,將輸出寫入日誌文件。不過,我看到它創建了一些空文件,但我看到一些正在創建的文件不是0大小,而是指出1byte;因此我在使用「if(-s」文件「)做其他事情做其他事情」的問題上遇到了一些後處​​理問題。有人可以幫助我爲什麼我的代碼創建一個空行(我想,雖然我已經在那裏放置一個chomp),有沒有辦法消除這個空行,以便輸出日誌文件將總是去0字節,如果沒有數據在處理unix命令後被捕獲?否則..你可以建議一種有效的方法來檢查文件是否爲這種情況下不是空的。文件長度不是0大小,但是是空的,如何消除這個?

sub sub_unaccessfiles { 
    my ($disk) = @_ ; 
    @disk_sorted = split (/\s+/, $disk) ; 
    $disk_Name = $disk_sorted[4] ; 
    my $aging_disk = basename ($disk_Name) ; 
    open (OUT3, ">./diskmonitor_logs/char_disks/aging_files_$aging_disk") || die "Cannot create ./diskmonitor_logs/char_disks/aging_files_$aging_disk: $!\n" ; 
    my $cmd_aging_grab = `find $disk_Name -type f -name .snapshot -prune -o -atime +180 -printf '%u\t%s\t%t\t%p\n'` ; 
    chomp $cmd_aging_grab ; 
    print OUT3 "$cmd_aging_grab\n" ; 
    close OUT3 ; 
     .. 
     .. 
} 

回答

0

嘗試:

print OUT3 "$cmd_aging_grab\n" if $cmd_aging_grab =~ /\S/; 
+0

感謝Shawnhcorey,我想你的建議,它工作得完美,我得到了0大小的文件。非常感謝! :) – Grace 2012-08-17 00:31:22

1

寫入輸出文件時刪除\n

+0

嗨M42,我解決了這個問題,請參閱Shawnhcorey的回覆。不管怎樣,謝謝。 – Grace 2012-08-17 00:40:14

5

您的打印線:

print OUT3 "$cmd_aging_grab\n" ; 

中有一個 '\ n' - 導致空行,每次 - 即使$ cmd_aging_grab的內容爲空

+0

+1對問題原因的解釋實際感謝 – daxim 2012-08-16 15:22:20

+0

爲Pirhac解釋根澳洲英語...但我必須將「\ n」,使得日誌讀取用戶;同時我需要檢查非空白文件以進行其他操作。無論如何我可以知道解決這個問題嗎? – Grace 2012-08-17 00:20:01

+0

嗨Pirhac,謝謝,因爲我已經有Shawnhcorey建議的解決方案基礎。但如果您有任何其他解決方案可供分享,我一直非常歡迎。再次感謝。 – Grace 2012-08-17 00:39:24

相關問題