作者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