免费注册 查看新帖 |

Chinaunix

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

print {$fh}; --出错了,learning perl 错了?!! [复制链接]

论坛徽章:
0
31 [报告]
发表于 2013-11-05 23:17 |只看该作者
回复 29# happy_dongwei


   因为自己现在在看perl,看了书想练下手,我同意你的说法,代码应该尽量写的“自说明”些,之前的脚本是大路的写法,主要是想换个思路改写下会怎样呢?于是就有这个练习脚本,希望把perl关于文件的语法自己练一篇的,没想到就出错了,当初挺是不解,按照perl的思想,因为在这个循环内默认是$_了,起头的想法是:既然你一直没出现,就让你一直隐藏着好了,所以print语句就没写$_,文件句柄总要写了吧?这时我忽然想起书本好像有这个写法,所以就写了,谁知报错。
因为在perl里有这样的写法:

while (<$fh> {
  
    print;
}

print语句默认就是打印$_的,我认为,没写参数,默认就是打印$_(同 print STDOUT ;),按照perl的这种思路,应该是这样的 ,谁知它不是

论坛徽章:
0
32 [报告]
发表于 2013-11-12 13:22 |只看该作者
回复 31# chenxianzai


    我试过, 不加句柄是可以不写$_的. 但加了句柄, 而且用变量形式的句柄, 就得写$_. 裸字就没有问题, 估计这是这个版本的perl的一个bug吧. 希望可以在后面修正.

论坛徽章:
0
33 [报告]
发表于 2013-11-13 09:27 |只看该作者
回复 32# happy_dongwei


    严重同意!!!!

论坛徽章:
0
34 [报告]
发表于 2013-11-14 18:43 |只看该作者
  1. open r_fh,'<','D:/perl/text.txt' or die "$!";
  2. open w_fh,'>','D:/perl/write.txt' or die "$!";

  3. while (<r_fh>) {
  4.     print w_fh;
  5. }

  6. close r_fh;
  7. close w_fh;
复制代码
這樣是OK的
   

论坛徽章:
0
35 [报告]
发表于 2014-02-20 11:56 |只看该作者
这个问题, 大骆驼有些说明, 小骆驼的确是说错了:

If you specify a FILEHANDLE, you may omit the LIST only if the FILEHANDLE is a
regular bareword filehandle, not a block or indirect filehandle.

page 918
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP