Perl基础 解析Perl标量和数组概念

开发 架构
Perl语言中Perl标量和数组的概念你是否熟悉,Perl有三种变量:Perl标量、数组、哈希,这里介绍一下Perl标量的概念和Perl数组的用法。

本文和大家重点讨论一下Perl标量和数组的概念,Perl有三种变量:Perl标量、数组、哈希;而Perl数组是由一组连续的Perl标量。

Perl读书手记

一、Perl标量

1、Perl有三种变量:Perl标量、数组、哈希
2、字符相加不是用“+”号,而是用“.”
3、
 

#!/usr/bin/Perl-w  
$num1="a";####“”是字符  
$num2="5";  
$num3=$num1x$num2;####$num1重复$num2次  
print"\$num3is$num3\n";  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

 

执行结果:
[root@test-linuxtmp]#./pe.pl
$num3isaaaaa
[root@test-linuxtmp]#
4、Perl中字符串的比较操作和Shell中的数值测试运算相同,Perl中的数值比较操作就和Shell的字符串比较操作相同。
awk中“=”表示赋值“==”表示等于关系的判断

二、Perl数组--数组是由一组连续的Perl标量

1、Perl中使用@加上数组名来表示一个数组;Perl中的数组下标是从“0”开始;Perl中的数组元素不必是同一数据类型

2、使用[]申请数组中第几个元素

3、$name@name%name分别表示Perl标量数组散列

4、push能够把一些元素添加到数组尾部,而pop函数每次只能取走一个元素(是取走而不是复制)末理解的“堆栈数据结构”

 

[root@test-linuxtmp]#catpg.pl  
#!/usr/bin/Perl-w  
@list1=(1..4);  
@list2=("zero","one","two","three","four");  
push(@list1,@list2);  
$last=pop(@list1);  
print"\@list1is@list1\n";  
print"\@list2is@list2\n";  
print"\$lastis$last\n";  
[root@test-linuxtmp]#vipg.pl  
[root@test-linuxtmp]#./pg.pl  
@list1is1234zeroonetwothree  
@list2iszeroonetwothreefour  
$lastisfour  
[root@test-linuxtmp]#  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

 5、unshift函数是在数组的头部插入一个或者是一些新的元素;shift是从数组的头部移走一个元素,整个数组看起来像是向左移动了一个位置。 

#!/usr/bin/Perl-w  
@list1=(0..4);  
@list2=("zero","one","two","three","four");  
unshift(@list1,@list2);###是将数组list2插入到数组list1  
$last=shift(@list1);  
print"\@list1is@list1\n\@list2is@list2\n\$lastis$last\n";  
 
[root@test-linuxtmp]#./ph.pl  
@list1isonetwothreefour01234  
@list2iszeroonetwothreefour  
$lastiszero  
[root@test-linuxtmp]#  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

 6、reverse函数的功能是颠倒数组,它可以把数组元素的顺序头尾颠倒。

[root@test-linuxtmp]#catpi.pl  
#!/usr/bin/Perl-w  
@list1=(0..4);  
print"\@list1is@list1\n";  
@list1=reverse(@list1);  
print"\@list1reverseis@list1\n";  
 
[root@test-linuxtmp]#./pi.pl  
@list1is01234  
@list1reverseis43210  
[root@test-linuxtmp]#  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

 7、哈希

哈希变量和数组非常类似,都可以存放多个Perl标量,每个Perl标量可以通过索引单独存取。不同的是哈希变量的索引不是数组的下标,而是另一个Perl标量。通常这个Perl标量被称作key,通过key,我们就可以访问
到其对应的数据。另一点的不同是哈希变量中的元素没有先后之分,是无序的,key是能够访问它们的惟一通道。Perl中使用百分号“%”来表示一个哈希变量。

为以下内容
 

[root@test-linuxtmp]#catpl.pl  
#!/usr/bin/Perl-w  
$area{'beijing'}=9;  
$area{'shanghai'}=8;  
print"$area{'beijing'}\n"  
%areab=('hebei'=>5,'handan'=>4);  
print"\$areabhebeiis$areab{'hebei'}\n";  
print"\$areabhandanis$areab{'handan'}\n"  
[root@test-linuxtmp]#  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

 

执行错误 

[root@test-linuxtmp]#./pl.pl  
Unquotedstring"areab"mayclashwithfuturereservedwordat./pl.plline5.  
Operatororsemicolonmissingbefore%areabat./pl.plline5.  
Ambiguoususeof%resolvedasoperator%at./pl.plline5.  
Can'tmodifymodulus(%)inscalarassignmentat./pl.plline5,near");"  
Executionof./pl.plabortedduetocompilationerrors.  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

 但将2到4行注释掉可以成功执行。原因不清楚

[root@test-linuxtmp]#catpt.pl
#!/usr/bin/Perl-w
%area=(1,"a",2,"b");
print"\%areais1$area{1}\n";

【编辑推荐】

  1. 解析两大Perl标量的操作符
  2. 浅析Perl标量的操作符
  3. 实例解析Perl守护进程用法
  4. Perl模式匹配经验总结
  5. 术语汇编 Perl变量中Perl关联数组用法解析
责任编辑:佚名 来源: 51cto.com
相关推荐

2010-07-20 15:36:58

Perl语法

2010-07-21 13:59:59

Perl引用

2010-07-20 16:05:07

Perl包

2010-07-13 09:50:55

Perl数组

2010-07-19 08:39:14

Perl包

2010-07-16 10:44:54

Perl数组

2010-07-13 14:26:11

Perl数组

2010-07-20 15:02:20

Perl数组

2010-07-15 12:51:17

Perl多进程

2010-07-20 09:23:30

Perl构造函数

2010-07-19 13:49:17

Perl函数

2010-07-16 12:59:46

Perl简单变量

2010-07-20 14:41:55

Perl语法

2010-07-15 09:49:23

Perl标量

2010-07-13 16:34:34

Perl 哈希表

2010-07-19 15:25:39

Perl标量转换函数

2010-07-13 11:11:39

Perl标量

2010-07-13 09:58:51

Perl关联数组

2010-07-13 13:27:13

Perl复杂数据结构

2010-07-20 10:23:24

Perl类
点赞
收藏

51CTO技术栈公众号