求助,如何在两个文件之间进行替换?
时间:2010-10-05
来源:互联网
举例说,现有两个文本文件: 1.txt和test.txt
1.txt里面是:
4
6
8
9
5
test.txt里面是:
ers=7.00
我想做的是把test里面的7分别替换为1.txt里的数字,然后依次追加存储到另一个名为out.txt的文件里,也就是生成:
ers=4.00
ers=6.00
ers=8.00
ers=9.00
ers=5.00
我写的代码如下:
复制代码
结果出来后out.txt里却只有一条: ers=4.00
冒似里面的while循环只进行了第一次,这是为什么呢?刚刚接触perl,请指教。。。谢谢!
1.txt里面是:
4
6
8
9
5
test.txt里面是:
ers=7.00
我想做的是把test里面的7分别替换为1.txt里的数字,然后依次追加存储到另一个名为out.txt的文件里,也就是生成:
ers=4.00
ers=6.00
ers=8.00
ers=9.00
ers=5.00
我写的代码如下:
- #!/usr/bin/perl -w
- use strict;
-
- my $a="1.txt";
- my $b="test.txt";
- open IN1, $a or die "can't open $a";
- open IN2, $b or die "can't open $b";
- open OUT, '>>', "out.txt" or die "can't open out.txt";
-
- while (my $line=<IN1>){
-
- while (<IN2>){
- chomp($line);
- s/7/$line/g;
- print OUT "$_\n";
- print "$_\n" ;
- }
- }
- close IN1;
- close IN2;
- close OUT;
冒似里面的while循环只进行了第一次,这是为什么呢?刚刚接触perl,请指教。。。谢谢!
作者: lena_tum 发布时间: 2010-10-05
问题在句柄IN2上
在第一次while(<IN2>)循环完成后,
IN2的内容已经读取完了,它的文件指针指向了test.txt的结尾
所以从第二次开始while(<IN2>)已经读取不了任何东西了
如果想要按照你的思路来做
需要用seek函数重新指定文件指针
复制代码
在第一次while(<IN2>)循环完成后,
IN2的内容已经读取完了,它的文件指针指向了test.txt的结尾
所以从第二次开始while(<IN2>)已经读取不了任何东西了
如果想要按照你的思路来做
需要用seek函数重新指定文件指针
- #!/usr/bin/perl -w
- use strict;
-
- my $a="1.txt";
- my $b="test.txt";
- open IN1, $a or die "can't open $a";
- open IN2, $b or die "can't open $b";
- open OUT, '>>', "out.txt" or die "can't open out.txt";
-
- while (my $line=<IN1>){
- seek IN2,0,0;
- while (<IN2>){
- chomp($line);
- s/7/$line/g;
- print OUT "$_\n";
- print "$_\n" ;
- }
- }
- close IN1;
- close IN2;
- close OUT;
作者: 珞水的大叔 发布时间: 2010-10-05
回复 珞水的大叔
果然!!!太太太感谢了!!!
果然!!!太太太感谢了!!!

作者: lena_tum 发布时间: 2010-10-05
回复 lena_tum


作者: 珞水的大叔 发布时间: 2010-10-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28