作者dipin (吃喝玩樂滿天下)
看板perl
標題Re: [問題] 讀取和寫入在同一個檔案
時間Sat Mar 24 14:06:48 2007
※ 引述《dipin (吃喝玩樂滿天下)》之銘言:
: 請問如果要用像是s/str1/str2/g 這樣的指令的話
: 可以讓作用在同一個檔案嗎?
: 像是
: 要把檔案中所有的4改成1111
: print "please enter name of the file you want to modify:";
: chomp($filename1=<>);
: open (file1, $filename1) || die $!;
: while (<file1>) {
: s/4/1111/g; #取代
: print file1 $_; #再印回去
: }
: close (file1);
: #印出改後的檔案內容
: open (file1, $filename1) ||die $!;
: print while (<file1>);
: close (file1);
: 這是錯的,請問要如果改呢?
: 有比較好的方法取代一個檔案裡的字串嗎?
: 還是一定要另外開一個檔案,然後把原本的unlink然後再改檔名??
※ 引述《dipin (吃喝玩樂滿天下)》之銘言:
: 請問如果要用像是s/str1/str2/g 這樣的指令的話
: 可以讓作用在同一個檔案嗎?
: 像是
: 要把檔案中所有的4改成1111
: print "please enter name of the file you want to modify:";
: chomp($filename1=<>);
: open (file1, $filename1) || die $!;
: while (<file1>) {
: s/4/1111/g; #取代
: print file1 $_; #再印回去
: }
: close (file1);
: #印出改後的檔案內容
: open (file1, $filename1) ||die $!;
: print while (<file1>);
: close (file1);
: 這是錯的,請問要如果改呢?
: 有比較好的方法取代一個檔案裡的字串嗎?
: 還是一定要另外開一個檔案,然後把原本的unlink然後再改檔名??
自幾爬了文
#!/usr/bin/perl
open (DATA, "+<$filename");
my @data = <DATA>;
seek (DATA,0,0);
foreach (@data) {
s/data1/data2/;
print DATA $_;
}
truncate (DATA, tell(DATA));
close (DATA);
_END_
這樣應該沒錯吧?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 69.226.223.54
→ dipin:參閱619篇 03/24 14:10
推 LiloHuang:我老大寫的當然會對~ 03/24 16:08