免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: maxpayne
打印 上一主题 下一主题

【请教】perl在打开一个文件句柄之后,是不是就无法写其他文件了? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-04-14 14:01 |只看该作者
回复 10# yybmsrs


   我刚开始也怀疑perl和所调用的shell造成,后来发现似乎不是, 只要用chomp去掉了输入的换行后,就能追加所有的行了

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
12 [报告]
发表于 2010-04-14 14:12 |只看该作者
回复 11# climby


    sh的echo中不能有换行?

论坛徽章:
0
13 [报告]
发表于 2010-04-14 23:24 |只看该作者
回复 4# longbow0


嗷,谢谢,发帖的时候笔误了

论坛徽章:
0
14 [报告]
发表于 2010-04-14 23:25 |只看该作者
回复 9# climby


   

呃,为什么呢?有换行符就写不进去么?

果然perl读文件要chomp chomp更健康

论坛徽章:
0
15 [报告]
发表于 2010-04-15 10:04 |只看该作者
回复 14# maxpayne

这个跟perl其实没有关系的,你想想如下场景:
在while( <> )中,$_ 默认是还有换行符的,按照方式
  1. system("echo $_ >> tmp");
复制代码
调用,因为$_的换行符,导致 '>>tmp'变成了shell命令中的另外一行,当然不会被正确执行了。
我想你肯定会问,为何最后一行会被写到tmp中?
这个... 那个.... 最后一行没有换行符了,执行是就会按照期望的执行的。{:3_189:}

论坛徽章:
0
16 [报告]
发表于 2010-04-15 11:13 |只看该作者
学习了。。。。。。

论坛徽章:
0
17 [报告]
发表于 2010-04-15 15:48 |只看该作者
回复  maxpayne

这个跟perl其实没有关系的,你想想如下场景:
在while(  )中,$_ 默认是还有换行符的, ...
climby 发表于 2010-04-15 10:04



   


这么想想就对了,牛啊,这都能想到,佩服,谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP