perl语言中例如local(*queryString)=@_ if @_;是什么意思?星号是什么?中间那个if又是怎么回事?

 我来答
百度网友c9e795dda
2012-10-22 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1153万
展开全部
local ( 後来的 my ) , 是指後面的变数将只有效於这个 block ( sub ) , 离开之後便会消失於虚空之中
*var , 是全域的意思, 当你 print 一个 *变数 出来的时候, 你会发现这会变成这个变数, 连同现行的 package 的全称, 即 *main::var 这样的全称.

因为这样的特性, 我们很多时会用 *变数来传递 "引用" (reference) . 如: *hi = \&hello;
无论呼叫 hi, 或者 hello, 实际上都是用 hello() 来处理. 但你给的例子似乎完全没有意思. 因为後面的不是引用. 但如果写成 local(*queryString)=\@_ if @_ ; # 多了一个 \ 在 @ 前
那就会有意思, 这样 *queryString 就可以引用到 @_ 的参数.

@_ 就是传入 sub 的参数, 如
sub hi {
print "Hi! @_"

}
hi ( "Peter ", "Mary ", "Joseph " ) ;
# Hi! Peter Mary Joseph

在 Javascript, Java 或者很多语言入面, 我们会写成这样
if ( condition ) one_statement;
如果 if 後面只有 1 句指令, 就可以不用 { }
perl 也是这个意思, 不过将 if 放在後面, 这使得看上去更像英文.

整句的意思就是:
如果有 @_ , 那就将 *queryString 变成 @_ 的引用
百度网友d580670
2012-10-21 · TA获得超过1983个赞
知道大有可为答主
回答量:2054
采纳率:82%
帮助的人:707万
展开全部
*表示别名意思是如果函数有传入参数的话给传入参数起个别名
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lx2284240860
2012-10-25
知道答主
回答量:13
采纳率:0%
帮助的人:4.7万
展开全部
换成另一种形式就是:
if(@_)
{
local(*queryString)=@_;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
niejieqiang
2012-10-21 · TA获得超过142个赞
知道小有建树答主
回答量:329
采纳率:100%
帮助的人:208万
展开全部
指定局部变量queryString以保存函数参数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式