免费注册 查看新帖 |

Chinaunix

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

请问下面两个perl的函数是什么意思?qw和scalar. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-03 06:06 |只看该作者 |倒序浏览
1,qw不是分隔字符串的意思吗?
比如 @a = qw(this is a test);这样不是就吧整个字符串分开存如数组了吗?
但是我看有的地方在很多程序的开头也有类似的代码?比如
use CGI wq(:standard);这个又是什么意思呢?

上面的区别是什么呢?用法有什么不同吗?还有什么特比的吗?

2,还有个函数scalar不是求数组元素个数的吗?
比如 $a = scalar(@a);这样就可以得到数组有多少个元素。
但是我看有的地方用到了时间上比如 scalar(localtime());
上面对吗?有什么区别呢?

谢谢大家,刚刚学习perl,很多不明白,多谢。

论坛徽章:
0
2 [报告]
发表于 2007-01-03 09:10 |只看该作者
我问过qw,结果被版主说了!
lz good luck

论坛徽章:
0
3 [报告]
发表于 2007-01-03 10:56 |只看该作者
scalar 不是求元素个数,它用来产生一个标量环境,对数组进行操作时,会返回元素个数
对函数进行操作时,如果那个函数内部用wantarray进行判断,就可以按照不同的请求环境给出不同的结果

qw 虽然知道意思,不过没法解释,等版版来说你吧,呵呵

论坛徽章:
0
4 [报告]
发表于 2007-01-03 13:33 |只看该作者
1,qw不是分隔字符串的意思吗?
比如 @a = qw(this is a test);这样不是就吧整个字符串分开存如数组了吗?
但是我看有的地方在很多程序的开头也有类似的代码?比如
use CGI wq(:standard);这个又是什么意思呢?


qw(this is a test)里面不是一个字符串,而是个字符列表."this is a test"才是个字符串.
当你use某个模块时,默认会导入一些函数或变量,他们通过所在包的@EXPORT这个特殊数组输出.
也有些不常用的方法或方法组没有默认输出,通常放在@EXPORT_OK数组里,他们要被手工导入.
use CGI qw(:standard)这里表示手工导入CGI.pm里的standard方法组,它其实是个函数集合.
这样看下就明白了:
use CGI qw();不导入任何符号及符号集
use CGI qw(:all);导入所有方法
use CGI qw(:standard);导入standard这个方法集合
use CGI;导入默认的方法,可能是什么也没有
use CGI qw(redirect);导入redirect这个方法



2,还有个函数scalar不是求数组元素个数的吗?
比如 $a = scalar(@a);这样就可以得到数组有多少个元素。
但是我看有的地方用到了时间上比如 scalar(localtime());
上面对吗?有什么区别呢?


scalar强迫语句位于标量环境,localtime()函数的返回值是区分列表环境还是标量环境的,若强迫返回值位于标量环境,就得到你想要的那串时间字符串.

论坛徽章:
0
5 [报告]
发表于 2007-01-03 19:41 |只看该作者
谢谢版主和楼上的朋友

论坛徽章:
0
6 [报告]
发表于 2011-07-20 10:05 |只看该作者
学习了。。项目中用到perl,确实很灵活 呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP