Chinaunix
标题:
(已解决)perl中替换文件的问题
[打印本页]
作者:
yinsong198611
时间:
2013-05-16 18:02
标题:
(已解决)perl中替换文件的问题
本帖最后由 yinsong198611 于 2013-05-17 13:22 编辑
#!/usr/bin/perl -w
use strict;
use 5.010;
use File::Find;
my @file;
find(\&wanted,"/tmp/tmp");
sub wanted{
push @file, $File::Find::name if (-f $_ and $_ =~ m/abc.txt$/);
}
@ARGV=@file;
$^I="";
while (<>){
next unless ($_ =~ m!data=1!);
$_ =~ s/data=1//g;
}
请教一下,我的代码是查找遍历/tmp/tmp下的abc.txt文件并且将文件中data=1替换成空白
但是每次执行此代码都把abc.txt文件清空,请问是什么原因。
---------------------------------
感谢kk861123的热情解答,已解决并学习了perl修改文件的处理
作者:
kk861123
时间:
2013-05-16 18:39
本帖最后由 kk861123 于 2013-05-16 18:39 编辑
回复
1#
yinsong198611
这行后面
$_ =~ s/data=1//g;
复制代码
加
print;
复制代码
作者:
yinsong198611
时间:
2013-05-17 09:14
回复
2#
kk861123
在后面加print;也不行哈市把文件清空了
作者:
kk861123
时间:
2013-05-17 09:51
回复
3#
yinsong198611
while (<>){
s/data=1//g;
print;
}
复制代码
作者:
yinsong198611
时间:
2013-05-17 10:38
回复
4#
kk861123
恩,这样可以。有个问题请教一下,替换文件时必须加上print是什么原因呢。我不清楚是怎么处理的
作者:
kk861123
时间:
2013-05-17 10:42
回复
5#
yinsong198611
文件修改的步骤应该是从文件中读取再写到另一个文件中,<>读,print 写
作者:
rubyish
时间:
2013-05-17 10:44
学习学习。
作者:
yinsong198611
时间:
2013-05-17 10:51
回复
6#
kk861123
学习了,谢谢。听你一讲我就明白为什么next unless ($_ =~ m!data=1!);为什么要删了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2