免费注册 查看新帖 |

Chinaunix

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

如何取得perl中匿名数组的长度 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-30 09:34 |只看该作者 |倒序浏览
例如@arr=([1,2,3],[4,5,6],[7,8,9]);
希望取得其中匿名数组的长度,需要如何实现呢?

我尝试@len=$arr[1];进行赋值,但是效果和$xyz=$arr[1]是一样的?

论坛徽章:
0
2 [报告]
发表于 2012-08-30 09:36 |只看该作者
perl -e '@arr=([1,2,3],[4,5,6],[7,8,9]);map{print scalar @$_;}@arr'

论坛徽章:
0
3 [报告]
发表于 2012-08-30 09:40 |只看该作者
ludio333 发表于 2012-08-30 09:36
perl -e '@arr=([1,2,3],[4,5,6],[7,8,9]);map{print scalar @$_;}@arr'


 又一个傻用map的

论坛徽章:
0
4 [报告]
发表于 2012-08-30 09:44 |只看该作者
回复 2# ludio333
谢谢你的解答!
能否提点下匿名数组的赋值呢?
如果(@len)=@arr,为什么它获取的是一个标量值呢?只能通过->引用吗?

   

论坛徽章:
0
5 [报告]
发表于 2012-08-30 09:44 |只看该作者
  1. perl -e '@arr=([1,2,3],[4,5,6],[7,8,9]); print scalar @{$arr[0]}'
复制代码
回复 1# 混人天成


   

论坛徽章:
0
6 [报告]
发表于 2012-08-30 09:46 |只看该作者
本帖最后由 混人天成 于 2012-08-30 09:50 编辑

回复 3# 兰花仙子
兰花仙子,刚拜读了你关于perl几个系列的内容,很受益!
哦,对了!这个问题还是源于你map中关于转置矩阵中的问题呢?
你里面提到的是n*n的矩阵,若是n*m的矩阵的话,如何提取其数组长度?
   

论坛徽章:
0
7 [报告]
发表于 2012-08-30 10:30 |只看该作者
回复 3# 兰花仙子

perl -e '@arr=([1,2,3],[4,5,6],[7,8,9]);for(@arr){print scalar @$_;}'
???

   

论坛徽章:
0
8 [报告]
发表于 2012-08-30 10:46 |只看该作者
ludio333 发表于 2012-08-30 10:30
回复 3# 兰花仙子

perl -e '@arr=([1,2,3],[4,5,6],[7,8,9]);for(@arr){print scalar @$_;}'


http://bbs.chinaunix.net/thread-1627880-1-1.html

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
9 [报告]
发表于 2012-08-30 11:16 |只看该作者
回复 6# 混人天成

use strict;
use warnings;
my @arr=([1],2,3,[4,5],6,[7,8,9]);

my $sCnt = 0;
foreach (@arr){
  if(ref($_) eq 'ARRAY'){
    print "anonymous array \$arr[$sCnt] has ". scalar @{$_} . " elements\n";
  }  
  $sCnt++;   
}
   

$ perl anonymous.pl
anonymous array $arr[0] has 1 elements
anonymous array $arr[3] has 2 elements
anonymous array $arr[5] has 3 elements

论坛徽章:
0
10 [报告]
发表于 2012-08-30 11:29 |只看该作者
回复 8# 兰花仙子


    感谢,学习了

$ time perl -e 'open STDOUT,">/dev/null";print $_ for 1 .. 1000000'   

real        0m0.438s
user        0m0.432s
sys        0m0.005s
$ time perl -e 'open STDOUT,">/dev/null";print $_ foreach 1 .. 1000000'   

real        0m0.412s
user        0m0.407s
sys        0m0.004s
$ time perl -e 'open STDOUT,">/dev/null";map{print }  1 .. 1000000'   

real        0m0.629s
user        0m0.588s
sys        0m0.039s
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP