作者derick02 (望世界和平)
看板Perl
標題[問題] 在一個檔案內容加上一行日期
時間Wed Jul 23 21:52:34 2008
我想在一個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
1F:推 salagadoola:代表a.txt是用\r\n當換行符號(windows的預設換行符號) 07/24 17:14
2F:→ salagadoola:把printf那行的\n改成\r\n就可以了 07/24 17:14
3F:→ derick02:真的可以了耶...太感謝了.... 07/24 19:25
4F:→ derick02:不過還是不了解為何這一行會影響到後面的print @file 07/24 19:26
5F:→ derick02:我是在linux底下執行的 07/24 19:26
6F:→ a1234957:這要問M$ XDD 07/24 20:58
7F:推 salagadoola:其實那一行沒有影響到後面的print @file 07/25 10:20
8F:→ salagadoola:是vi看到第一行的\n以為你這個檔案是用\n當換行符號 07/25 10:20
9F:→ salagadoola:於是就把後面的\r都用^M顯示 07/25 10:21
10F:→ derick02:原來如此,感謝s大的分享,我確實是用vi來開啟檔案 07/25 13:29