免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4066 | 回复: 5

请教如何能读一个文件,而且能做字符串替换? [复制链接]

论坛徽章:
0
发表于 2003-03-10 18:13 |显示全部楼层
我试了半天,匹配什么都正常,调试也print出正常的结果,
但就是最后不会Update文件的内容!
自己先汗一下。。。不知道哪里错了,请大家指正!
#!/bin/perl
use strict;
my $Dir = "/backup/Oct/test";
my $mail;
opendir DH, $Dir or die "Cannot open $Dir!";
foreach $mail(readdir DH) {
        next if ($mail=~ /^\./);
        next if ($mail=~ /pl$/);
        print "Now is $mail\n";

        open (MAIL, "+<$mail"
                or die "Cannot Open The File $mail to write!";
        while(<MAIL>{
                chomp;
                if (/Type\s=\sinternet/) {
                        if(s/internet/Internet/g)
                                {print "Success Replace!\n"};
                        print "I Find The STR $_\n";
                }
        }
        close MAIL;
}

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2003-03-11 09:13 |显示全部楼层

请教如何能读一个文件,而且能做字符串替换?

根據我的經驗..我每次用
open(FH,"+<$file";
從來沒有成功寫回去過....
我也不曉得哪兒有問題...反正就是這樣...

所以建議你分開寫吧...
open(FH1,"<$file";
open(FH2,">;$file";

论坛徽章:
0
发表于 2003-03-11 09:35 |显示全部楼层

请教如何能读一个文件,而且能做字符串替换?

以读写方式打开的文件一般来说都是针对随机文件的,需要对文件指针位置,数据长度进行控制。如果是文本文件,你又不去控制这个指针位置和数据长度的话,那么肯定会有问题的。

就你的代码来看根本没有对文件句柄MAIL进行过写操作,如果说你替换后的字符串长度和原来一致,那么倒还可以考虑用读写方式打开文件。当然需要使用seek回退文件指针后再进行写入操作。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2003-03-11 23:10 |显示全部楼层

请教如何能读一个文件,而且能做字符串替换?

謝謝啦...大概是每次我都沒用seek把offset指回到0的位置..
所以不能用.....我下次試試...

论坛徽章:
0
发表于 2003-03-14 22:24 |显示全部楼层

请教如何能读一个文件,而且能做字符串替换?

谢谢各位回复,我现在是分开写,读了再写,用两次句柄解决问题
nyfor和apile兄能讲讲seek()地用法么?
另外,如果是大文件,不想一次读到内存里去应该如何操作?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2003-03-15 15:45 |显示全部楼层

请教如何能读一个文件,而且能做字符串替换?

seek的用法請用下列指令去看..跟C的幾乎一模一樣..
perldoc -f seek

大檔案?用<FileHandle>;一次才讀一行..不會把只整個檔案
讀進memory中的...

除非你用@File = <FileHandle>;;
才會讀進memory...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP