2011-01-21 57 views
0

我試圖用perl將日期戳添加到我的輸出文件中。我所得到的是一個奇怪的'?'附加到日誌文件的時間戳。試圖在perl中添加日期/時間戳輸出文件的問題

輸出文件:abcdump-20110120?.log

而另一個奇怪的現象是,我的代碼不會用名字,我用我的$dt(日期)可變.csv擴展$node-$tblist.$dt.csv

輸出文件我的輸出文件:foo-p000.20110120

但是,如果我從命名約定刪除0​​$node-$tblist.csv

它將工作:foo-p000.csv

它一定是我如何創建我的日期戳。

代碼:

my $dt = `date '+%Y%m%d'`; 
    open (LOG, "> abcdump-$dt.log") || die "cannot append"; 
    foreach my $tblist (@tblist) 
    { 
     chomp $tblist; 
     my $crfile = qq{mysql -u test -pf00 --database $dbsrc -h $node -ss -e "SELECT 'a','b','c' UNION SELECT 1,2,3 FROM $tblist"| tr "\t" ",">$node-$tblist.$dt.csv}; 
     system($crfile); 
     print LOG "Executed on $dt => $crfile\n"; 
    }; 
    close(LOG); 
+2

你應該研究`time`和`strftime`(來自POSIX模塊)和`localtime`,所以你不用去運行`date`命令。大概:`my $ dt = strftime('+%Y%m%d',localtime(time));` – 2011-01-21 06:07:06

+0

感謝您的輸入 – jdamae 2011-01-21 06:20:07

回答

4

忽略在代碼中的其他問題,我懷疑這是一個換行符作爲date輸出的一部分。

chomp $dt; 

應該照顧你描述的兩個問題。

您也可以考慮使用Perl的localtimegmtime來代替。