作者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
1F:→ dipin:参阅619篇 03/24 14:10
2F:推 LiloHuang:我老大写的当然会对~ 03/24 16:08