$#$ 在perl里是什么意思?

$allitems=[];$item=shift(@ARGV);push(@$allitems,$item);$itemkeys=[];$#$itemkeys=$#$al... $allitems = [];
$item = shift(@ARGV);
push(@$allitems, $item);
$itemkeys = [];
$#$itemkeys = $#$allitems;

程序如上,不理解最后一句话是什么意思。
还有,per文档里说 $# - The output format for printed numbers. Deprecated。不理解什么意思。
两个问题,有满意的答案立刻采纳加分
展开
 我来答
计名pS
推荐于2017-11-24 · TA获得超过3649个赞
知道大有可为答主
回答量:4189
采纳率:0%
帮助的人:2198万
展开全部
"...不理解最后一句话是什么意思" <--你连前面的也没理解;不是我打击你,大兄弟~~

$allitems = []; #这个是数组参量(Array reference), 不是标量;有点像C里的指针,但不完全是
@$allitems #把刚才的参量解参还原为数组....

当然,数组你明白,其顺序排号 (index) 从 0 开始:0 1 2 3 4.....n
$#$allitems 也就是 @$allitems 这个解参了的数组里最后之一项的排号数目 (即 n)

所以,$#这个时候不能拿出来单独理解;希望你明白了....

$# - The output format for printed numbers. Deprecated 这个 $# 是 peRl 在打印报表 (Report)时,控制数字打印格式的一种,现在已经不再使用了,所谓:Deprecated
===================================
我奉劝你一句:如果你是打算学习 Perl, 买本小骆驼书 (Learning Perl, 封面是个小骆驼); 扎实地从头学起,把每一个符号和公式都弄懂.... Perl 的魅力绝对不是 VB/Java 所能比拟的--后者,比如,如果你学会了条件语句,所有的条件语句都长一个样;Perl 则是每个人的写法很有可能出乎你意料之外的....

如果你只是想看懂某段程序怎么实现某种功能的,这个以你自己之力,可能性不大;你拿上全部原程序找专业人士帮忙~~

希望以上对你有帮助, 祝好~~
更多追问追答
追问
谢谢深入的解释,我在一份手册上找到的注释是
“$#var - last index of array @var.”
那么$#$allitems 就是n了,但是“ $#$itemkeys = $#$allitems; ” 作何解释呢?

atmystate的解释是“将$allitem看成数组得到的数组长度用于初始化$itemkeys引用的数组长度” 。那是不是说以n为长度来初始化$itemkeys?
追答
"...以n为长度来初始化$itemkeys**数组长度**" <--理解完全正确
百度网友d580670
2011-09-05 · TA获得超过1983个赞
知道大有可为答主
回答量:2054
采纳率:82%
帮助的人:705万
展开全部
@m=([1,2,3],[1,2,3,4]);
$#$将引用看成数组然后求数组长度,作用与数组的$#意义是一样的$#m
$#$m[0]就是2,$#$m[1]就是3
最后一句的意思就是将$allitem看成数组得到的数组长度用于初始化$itemkeys引用的数组长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式