免费注册 查看新帖 |

Chinaunix

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

Perl新手的"非新手"问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-11 11:21 |只看该作者 |倒序浏览
希望对perl有深入理解的人回答, 浅尝辄止或经验主义者慎言

Q1: print @array和print "@array"的结果是有差别的, 后者自动添加了空格作为元素间的分隔符显示. 这是print自己特有的处理还是具有一定普片性的现象?

Q2: 函数调用时如果有参数, 似乎括号()是可有可无的, 但直觉告诉我并不一定如此. 加不加括号真的一点差别都没有吗? 如果有, 什么差别?

Q3: 还是函数调用问题。我看到有的参数间需要逗号分隔,有的不要(如 print FD "xxxx"), 为什么?

论坛徽章:
3
技术图书徽章
日期:2013-12-14 13:31:0615-16赛季CBA联赛之八一
日期:2016-03-10 18:23:4615-16赛季CBA联赛之青岛
日期:2016-03-19 11:36:04
2 [报告]
发表于 2011-11-11 11:49 |只看该作者
1、print "@array" 数组是作为内插变量(返回标量字符串),返回的结果再作为print的参数,直接print @array是在列表上下文中求值
2、有差别,
3、FD是文件句柄,"XXX"是写入的类容

俺也新人

论坛徽章:
0
3 [报告]
发表于 2011-11-11 11:50 |只看该作者
2,如果是函数应该加不加都一样,但是好像如果是OO的方式调用class就不一定了。

论坛徽章:
0
4 [报告]
发表于 2011-11-11 12:00 |只看该作者
1、print "@array" 数组是作为内插变量(返回标量字符串),返回的结果再作为print的参数,直接print @arra ...
小perl 发表于 2011-11-11 11:49



    我说了,慎言! 你的回答典型的新手,而且有些所答非所问.

论坛徽章:
0
5 [报告]
发表于 2011-11-11 12:20 |只看该作者
回复 4# nhw_cs


    那你说说非新手的回答应该是什么样子的?
   

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
6 [报告]
发表于 2011-11-11 12:22 |只看该作者
print @array和print "@array"的结果是有差别的, 后者自动添加了空格作为元素间的分隔符显示. 这是print自己特有的处理还是具有一定普片性的现象?

print @array     这个是工作在标题上下文
print "@array"   这个是工作在列表上下文
Perl 中有上下文的概念,你需要理解。

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
7 [报告]
发表于 2011-11-11 12:26 |只看该作者
Q2: 函数调用时如果有参数, 似乎括号()是可有可无的, 但直觉告诉我并不一定如此. 加不加括号真的一点差别都没有吗? 如果有, 什么差别?

这个《Perl语言编程》 对这个有很详细的讲解。如果是自定义的函数,都建议加上 () ,这样如果没有事先声明的函数也不需要加 & 在前面,会很难看。

&subroutine_name  --不需要事先声明,可以函数写在后面
subroutine_name()    --不需要事先声明,可以函数写在后面
subroutine_name  --需要事先声明,要么函数写在调用前面

论坛徽章:
0
8 [报告]
发表于 2011-11-11 12:26 |只看该作者
print是列表操作符

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
9 [报告]
发表于 2011-11-11 12:27 |只看该作者
Q3: 还是函数调用问题。我看到有的参数间需要逗号分隔,有的不要(如 print FD "xxxx"), 为什么?

建议看 《Perl 最佳实践》

论坛徽章:
0
10 [报告]
发表于 2011-11-11 12:28 |只看该作者
Q1: refer to $" and $,
Q2, 3: refer to function prototype
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP