[問題] 在一個檔案內容加上一行日期

看板Perl作者 (望世界和平)時間16年前 (2008/07/23 21:52), 編輯推噓2(208)
留言10則, 3人參與, 最新討論串1/1
我想在一個a.txt的檔案加上日期, 然後存成a.txt 例如a.txt內容是 aaa bbb ccc 執行後a.txt內容變成 20080723 aaa bbb ccc 但是我run以下的寫法, 卻會在每一行後面都有^M 可是如果我將printf NEWFILE "%d%02d%02d\n", $year+1900, $mon+1, $mday; 這行拿掉, 在每行後面就不會出現^M 不曉得這是什麼原因? 亦或者有大大有其他方法可以做到這件事而不會出現^M? 非常感謝 #!/usr/bin/perl open(FILE, 'a.txt') or die "$!"; @file = <FILE>; close(FILE); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); open(NEWFILE, '> a.txt') or die "$!"; printf NEWFILE "%d%02d%02d\n", $year+1900, $mon+1, $mday; print NEWFILE @file; close(NEWFILE); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.210.94

07/24 17:14, , 1F
代表a.txt是用\r\n當換行符號(windows的預設換行符號)
07/24 17:14, 1F

07/24 17:14, , 2F
把printf那行的\n改成\r\n就可以了
07/24 17:14, 2F

07/24 19:25, , 3F
真的可以了耶...太感謝了....
07/24 19:25, 3F

07/24 19:26, , 4F
不過還是不了解為何這一行會影響到後面的print @file
07/24 19:26, 4F

07/24 19:26, , 5F
我是在linux底下執行的
07/24 19:26, 5F

07/24 20:58, , 6F
這要問M$ XDD
07/24 20:58, 6F

07/25 10:20, , 7F
其實那一行沒有影響到後面的print @file
07/25 10:20, 7F

07/25 10:20, , 8F
是vi看到第一行的\n以為你這個檔案是用\n當換行符號
07/25 10:20, 8F

07/25 10:21, , 9F
於是就把後面的\r都用^M顯示
07/25 10:21, 9F

07/25 13:29, , 10F
原來如此,感謝s大的分享,我確實是用vi來開啟檔案
07/25 13:29, 10F
文章代碼(AID): #18XpUZ0Y (Perl)