Re: [問題] 讀取和寫入在同一個檔案

看板Perl作者 (吃喝玩樂滿天下)時間18年前 (2007/03/24 14:06), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

03/24 14:10, , 1F
參閱619篇
03/24 14:10, 1F

03/24 16:08, , 2F
我老大寫的當然會對~
03/24 16:08, 2F
文章代碼(AID): #161B_vXR (Perl)
討論串 (同標題文章)
文章代碼(AID): #161B_vXR (Perl)