本文共 3081 字,大约阅读时间需要 10 分钟。
这次学习一维数组(列表)。
做个练习(保存为f41.pl):
$ perl f41.pl
@boys=Grey Peter Bobby @girls=Marcia Jan Cindy @kids=Marcia Jan Cindy Grey Peter Bobby @family=Marcia Jan Cindy Grey Peter Bobby Mike Carol Alice $family[0]=Marcia @family[0,2]=Marcia Cindy $family=test $size=9 scalar(@family)=9再做个练习(保存为f42.pl):
Linux屏幕中录入数组元素用ctrl+d结束,用回车间隔。
$ perl f42.pl
Input array elements: aa bb cc Your inputs: @myarray[0]=aa @myarray[1]=bb @myarray[2]=cc数组可以用来赋值:
($a,$b,$c)=qw(apple,orange,banana);#a,b,c被分别赋值 ($a,@b,$c)=qw(apple,orange,banana);#a=apple,@b=(orange,banana),$c=undef ($a,$b,$c)=qw(apple,orange,banana,peach);#a,b,c被分别赋值,peach没有用到 ($a,$b,$c)=qw(apple,orange);#a,b被分别赋值,$c=undef打印数组:print "@family";
重要函数:split、join、reverse和sort。
通过本次学习,我加深了对perl的印象。目前感觉可以用“元素”和“列表”来总结perl中的一些概念。元素有数值和字符串两种,列表中的元素可能是数值也可能是字符串。指向元素的变量用$开头,指向列表的变量用@开头。继续思考下去,有个问题是perl是如何在数值和字符串之间转换的?要深入理解perl,理解这个转换细节是必要的。可以参考: 。顺便的,往后翻几页可以看到这里提到了“弄清列表和数组间的差别”,我想应该修改为“弄清变量名称和变量内容的差别”,变量名称和变量内容在内存中应是分开存储的,@mylist=('a','b','c'); 中“mylist”是变量名,('a','b','c')是变量内容的表达式,变量内容也可以表达为qw(a b c)。那么,理解$size=()=qw(a b c);语句,就应该是这样:()=qw(a b c)上下文环境要求返回列表不要求变量名引用,$size=....上下文要求返回标量,根据perl的自动转换“规矩”,就返回了3。至于为什么$size=qw(a b c);返回c而不是3,也较容易理解:qw(a b c)只是个表达式,这个表达式放到列表上下文中会被解析为列表存储在内存中,但是到了标量上下文中就是$size=('a','b','c'); 根据perl的自动转换“规矩”,返回了c。
练习(f43.pl):
$ perl f43.pl
Useless use of a constant in void context at f43.pl line 2. Useless use of a constant in void context at f43.pl line 2. c 3上面输出中报了"Useless use of a constant in void context"报警信息的意思是$size=qw(a b c); 这个语句前两个值a和b没派上用场。
修改成下面这样就不会报警了:
$ perl f43.pl
c 3这次就到这。
本文转自 hexiaini235 51CTO博客,原文链接:http://blog.51cto.com/idata/803391,如需转载请自行联系原作者