设为首页 收藏本站
查看: 830|回复: 0

[经验分享] Perl学习笔记-列表和数组

[复制链接]

尚未签到

发表于 2017-5-19 08:51:58 | 显示全部楼层 |阅读模式

  • 列表是标量的有序集。数组是包含列表的变量。
  • 列表是数据,数组是变量名。
  • 列表的每个元素都是一个独立的标量值,这些值是有序的。
  • 一个列表可以包含数字,字符串,undef值,和任意其他不同类型的标量值组合。
  • 列表可以包含任意数量的元素,从0到填满整个内存。
  • 数组名字和标量属于完全不同的命名空间,Perl知道哪个是标量哪个是数组。标量是$,数组是@
  • 下标可以是数字也可以是表达式。下标超出数组的范围不会报错,只会返回undef的值,如果没有把值放入对应的位置的话。
  • 对于$array[0] = "abc"。这样的列表,最后一个元素的索引为$#array。这里是0。可以用$array[$#array + 1]来对数组的下一个索引进行赋值。
  • 列表支持反向索引,从-1,-2,-3开始倒数。-1表示列表的最后一个元素。
  • 可以用括号才创建一个列表,例如(1, 2, 3)  (1, 2.., 99) 范围操作符。
  • 列表中也可以是变量。 ($a, $b, $c)。
  • 使用qw(quoted words)可以方便的输入大量需要加引号的数组。例如qw(abc, ded, ddd, ee)。还可以qw{..}, qw!..!。只要前后的符号匹配就可以了。
  • 列表可以一起赋值,例如 ($fred, $string, $number) = ("abc", "dec", "fdsf");
  • 使用@来引用数组,也就是对列表数据的整体的引用。@array = qw {abc, ddd, ccc};
  • 数组只能包含标量值,不能包含数组,不支持数组的嵌套。
  • @copy = @source; 把一个数组复制到另外一个数组。
  • 数组可以作为栈来操作。pop和push,$value = pop(@array)或者 $value = pop @array,甚至pop @array。 push(@array, 4)。 push @array, 8。push @array, 1..10 直接加入10个元素。
  •  pop和push都是操作数组尾的,shift和unshift是操作数组头。
  • 数组可以被插入字符串中,然后被打印出来。
  • 对于@array,那么$array[1]引用的是数组的第二个索引的值,${array}[1]引用的确实$array这个标量的值。没有下标引用的时候,使用的标量名字空间的内容。
  • foreach可以遍历整个数组,每个变量为 foreach $content(@array),是$content。
  • 如果不指定变量的名字,也可以使用默认的匿名变量。 foreach (1..10) { $_ },也可以$_ = "abc"; print;就是不带参数的时候会去找默认的全局共享的变量。
  • reverse可以把数组的内容反转。@reversedResult = reverse @source;
  • sort将数组的内容按照字符的顺序排序,然后输出新的数组。对数字的排序也会当成字符来处理的。@sortedResult = sort @source;
  • 上下文,上下文分为标量和列表的。$number = 42 + @people; 上面会使用标量的上下文,输出的是42假设@people的个数。
  • List-Producing。@result = reverse qw {abc, abd, dec} 列表上下文 $result = reverse qw {abc, adb, dec} 标量上下文 。所以需要看返回的内容要作为什么用。List-Producing的意思就是说,值是列表类型,根据不同的赋值对象,表现的方式是不一样的。
  • Scalar-Producing。值是标量类型。如果赋值给列表,那么就是只有一个元素的列表。
  • 可以强制转换为标量的上下文。就是结果是标量。例如 print "@people" 是打印出@people里面的所有的值,以及 print "scalar @people"是打印@people的元素个数。
  • 如果把<STDIN>保存在列表中,那么就是读取剩下的内容直到遇到EOF。
  • chomp也可以对列表进行操作,会遍历整个列表,然后对每个列表里面的标量进行修改。
  答案:
  @strings = <STDIN>;
#chomp(@strings);
@results = sort @strings;
print "-------------Result------------\n";
print @results;
  #@names = qw {fred, betty, barney, dino, Wilma, pebbles, bamm-bamm};
#@numbers = <STDIN>;
#chomp(@numbers);
#print "-------------Result------------\n";
#for $number(@numbers) {
    #print "The name of number:" . $number . " is " . $names[$number-1] . "\n";
#}
  #@array = <STDIN>;
#@array = reverse @array;
#print "-------------Result------------\n";
#print @array;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378928-1-1.html 上篇帖子: 神奇的Perl-哈希和数组(7) 下篇帖子: perl学习日记7正则表达式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表