perl的变量、数组、哈希1

变量是一种数据项,其值可随着程序的运行而发生变化。

变量可以位于程序的任何位置,并且不需要像在高级语言中那样声明它为特点的类型。

变量的值可以为字符串,数字或是它们的组合。

二,perl变量的类型

A.标量型

$变量=值;

B.数组型  

@数组=('值1','值2','值3');

C.关联数组(常称散列【hash】)

         %hash=('标量1’ => ‘值1’,

                '标量2’ => ‘值2’, ) ;

三,变量的作用范围

变量的作用范围默认是全局的。如需局部变量,需要用相关局部变量函数our,my,local设置

四,变量如何赋值

赋值运算符是等于号(=),常将右侧的值赋值予左侧的变量。任何赋的值都代表了一个已经命名的存储空间,称为左值(lvalue)

语句以分号(;)结尾。

举例

#!/usr/bin/perl
$day=12; #变量
@months=('Mar','Apr','May'); #数组
%states= ( #散列
'CA' => 'California',
'ME' => 'Maine',
'MT' => 'Montana',
'NM' => 'New Mexico',
);
print "$dayn"; #n换行
print "@monthsn";
print "$months[0], $months[1], $months[2]n"; #打印数组中的值
print "$states{'CA'}, $states{'NM'}n"; #打印散列中的值
print $x + 3, "n"; #未赋值的为空
print "***$name***n"; #为赋值的为空

五,引号规范

单引号,双引号都可以作为定界符。区别如下

单引号不支持特殊字符,引号内插入的变量无法识别

双引号可以执行变量等特殊字符

反引号,执行shell等系统命令。注意,此处的反引号是~键上面的`

Perl提供了用另外一种形式的引号表示方法。q,qq,qx和qw

q代表一个单引号    q/Hello/   'Hello'

qq代表一个双引号   qq/Hello/  "Hello"

qx代表一个反引号   qx/date/   `date`

qw代表引用的子列表 @list=qw/red yellow blue/;       @list={'red','yellow','blue'}

六,变量型变量

#!/usr/bin/perl
$number=200; #数字
$name="itnihao"; #字符
$today=localtime(); #perl的内部函数,获取时间
print q/$today,number is $number,name is $namen/,"n"; #单引号,则变量无法执行
print qq/$today.number is $number,name is $namen/; #双引号,内部变量正确执行
print "$today,${name}'s perln"; #{}后面可以追加值
print qx/daten/; #反引号,执行系统的date命令


在perl中,表示特殊符号,如$100 则用\转义即可

defined函数,标量不为有效的字符串,数字的时候,就是未定义的变量,返回null,成功则为1

undef函数 解除已经定义的变量

$_ 标量型变量

为$_赋值后,chomp,split和print会把新的$_值当做输入参数

#!/usr/bin/perl
$name="itnihao";                           #定义变量
print "name OK   n" if defined $name;         #如果变量定义,显示name OK
print "name wrongn" if defined $NAME;         #如果变量定义,显示name wrong
undef $name;                                #取消标量name的值
print "name $namen";                         #打印$name,此处已经取消
$_="good night!";                             #赋值
print;                                        #显示$_


七,数组

7.1数组概念

在perl中,数组是一个有名字的列表,含有有序的标量型变量集合。数组必须以@开头,数组名位于方括号([])之间的下标,非负整,从0开始

举例

#!/usr/bin/perl
@name=("Qiu","Gao","Qi","Shuang");  #数组
@list=(2..20);     #数组,值为2-20的自然数
$a=1;            #定义三个标量
$b=2;
$c=3;
@items=($a,$b,$c); #使用含有3个标量的列表对数组初始化
$size=@items;     #将数组赋值给$size标量型变量,值是数组中的元素个数(从0开始)
@mammals=qw/dogs cats cows/;  #qw数组定界符
@fruit=qw(apples pears peaches);
print "@namen";             #单元@name数组的值
print "the @name    is $#name+1 wordsn";  #其中$#name是数组的个数(从0算起)
print "$name[0],$name[1],$name[2],$name[3]n"; #依次打印数组中的值
print "the @list   is @listn";                #打印数组中的值2-20
print "the $a $b $c is @itemsn";             #数组由变量构成
print "the $size    is $sizen";               #数组赋值给标量,显示元素个数
print "the @mammals is @mammalsn";        #使用qw定界符的数组
print "the @fruit   is @fruitn";

7.2特殊标量和数组赋值

$#arrayname 取数组长度,或者是截取数组的长度

$[初始下标为0,也可以不从0开始,不过perl作者不推荐这么做

#!/usr/bin/perl
@grades=(90,87,96,100,86);
print "array is @gradesn";
print "The number of the last index is $#gradesn";
$#grades=3;     #改变了数组的长度,将数组下标缩减为3
print "The array is truncated to 4 elements:@gradesn";
@grades=();     #使用了一个空列表,使得该数组被清空
print "The array is completely truncated:@gradesn";

运行结果如下

如何访问数组

@name[0],表示数组中的第一个标量,以此类推。

@name[-1,-3] 从数组中的倒数第一个标量到倒数第三个标量

7.3 数组分片 (Array Slices)

当把某个数组的值赋予到另一个数组中时,得到的数组称为数组分片.

#!/usr/bin/perl

@names=('Tom','Jack','Green','Pete');

@pal=@names[1,2,3];

print "@palnn";

($friend[0],$friend[1],$friend[2])=@names;

print "@friendn";

把元素Tom','Jack','Green','Pete赋予数组@names

把数组@names元素1,2和3赋予数组@pal,本行会把数组@names的元素分片存储到@pal数组中。

通过抽取数组@names的的分片元素1,2,3,传报个价数组@pal

#!/usr/bin/perl

@colors=('red','green','yellow','orange');

($c[0],$c[1],$c[3],$c[5])=@colors; #创建数组分片,它由$c[0],$c[3],$c[5]) 四个标量型元素组成,注意这个下标编号不是连续的。

print "********************************n";

print "colors is ",@colors,"n";

print "colors is ","@colorsn";

print "********************************n";

print "colors is ",$c[0],"n";   #有值red

print "colors is ",$c[1],"n";   #有值green

print "colors is ",$c[2],"n";   #无值

print "colors is ",$c[3],"n";   #有值yellow

print "colors is ",$c[4],"n";   #无值

print "colors is ",$c[5],"n";   #有值orange

print "*******************************n";

print " The size of the @c arry is ", $#c + 1,".n";  # $#c是数组C元素的个数(从0开始)

print "*******************************n";









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值