免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4774 | 回复: 13
打印 上一主题 下一主题

关于文件句柄 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-25 15:56 |只看该作者 |倒序浏览
文件句柄有三种:
  读 open(my $HD,"$file_name"); 只能读,没有文件则读不了
   写 open(my $HD,">$file_name"); 可读可写,文件不存在则创建,如存在覆盖其内容
   追加 open(my $HD,">>$file_name");可读可追加写入,新数据加在原文件所有数据之后

  现在我想修改(或删除)某个文件的几行,想了个办法是建立一个读句柄,读原文件,再建立一个写句柄,把原文件的内容一行一行写入一个新文件,遇到需要修改(或删除)的行时,进行修改(或删除)后才写入。最后新文件就是我想要的结果。
  
  大家帮我想想有简单一些的思路么?
   直接操作文件修改能不能实现?

[ 本帖最后由 wsliuhao 于 2007-4-25 15:59 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-04-25 16:00 |只看该作者
这样的思路已经挺好的了。

论坛徽章:
0
3 [报告]
发表于 2007-04-25 16:07 |只看该作者
*STDOUT = *FH
print

论坛徽章:
0
4 [报告]
发表于 2007-04-25 16:30 |只看该作者
这样的思路已经挺好的了。

我打算删除一个比较大的文件(1000多行)的头两行,用我的办法感觉好笨。

论坛徽章:
0
5 [报告]
发表于 2007-04-25 16:32 |只看该作者
*STDOUT = *FH
print


alexru兄能稍作解释么

论坛徽章:
0
6 [报告]
发表于 2007-04-25 16:35 |只看该作者
原帖由 wsliuhao 于 2007-4-25 16:30 发表

我打算删除一个比较大的文件(1000多行)的头两行,用我的办法感觉好笨。


没别的办法,怎么着也得移动数据。

论坛徽章:
0
7 [报告]
发表于 2007-04-26 21:47 |只看该作者

回复 1楼 wsliuhao 的帖子

可以这样做:
先将文件所有内容读入一个变量中,然后关闭文件;再以写方式打开该文件,将变量中内容处理后写入文件即可

论坛徽章:
0
8 [报告]
发表于 2007-04-27 09:11 |只看该作者
可以这样做:先将文件所有内容读入一个变量中,然后关闭文件;再以写方式打开该文件,将变量中内容处理后写入文件即可


通过变量这样做其实和使用临时文件没有本质的区别吧,都用了一个过渡产物
原文件->临时文件->处理临时文件->copy回去
原文件->变量->处理变量->写 回去

而且如果用变量,在文件很大时,执行起来会很慢的。

PS:要是有能写$.对应行的句柄就好了,~~

[ 本帖最后由 wsliuhao 于 2007-4-27 09:14 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2007-04-27 09:20 |只看该作者
原帖由 wsliuhao 于 2007-4-27 09:11 发表


通过变量这样做其实和使用临时文件没有本质的区别吧,都用了一个过渡产物
原文件->临时文件->处理临时文件->copy回去
原文件->变量->处理变量->写 回去

而且如果用变量,在文件很大时, ...


如果要简单,还是使用Tie::File吧。
一般来说,这种删除前两行的行为应该是少数情况。如果要频繁这样做,你肯定需要一个文件数据库。Perl有很多这种接口。

论坛徽章:
0
10 [报告]
发表于 2007-04-27 10:14 |只看该作者
如果要简单,还是使用Tie::File吧。
一般来说,这种删除前两行的行为应该是少数情况。如果要频繁这样做,你肯定需要一个文件数据库。Perl有很多这种接口。


能简单介绍下Tie::File模块的作用么,适合使用在什么地方。

还有你提得文件数据库,是不是还需要配置ODBC之类的东西,把众多文件当作一个数据库的多个表来操作,
写,删和改都用SQL语句来实现,是这个意思么?

[ 本帖最后由 wsliuhao 于 2007-4-27 10:15 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP