【Perl脚本】第三部分:Perl数据结构

系列文章目录

Perl有且只有3种变量类型:标量(saclar)、数组(array)和散列(hash)

标量

使用my来声明标量,变量存储的内容可以是字符串,数字,引用,文件句柄等等,而且同一个标量可以先存储数字,然后存储字符串。

注意:

  1. Perl的一些内建变量由全大写字母组成,所以我们最好避免创建全大写字母的变量名
  2. 变量区分大小写,$abc和$Abc是两个变量

标量赋值使用等号,左侧是标量名,右侧是被赋予的值。

my $num1 = 10;
my ($num2,$num3,$num4)=(1,2,3)

如果标量的值是字符串,使用双引号或单引号来包围字符串。双引号内如果有变量,则该变量会被实际的值替代。单引号则保留原始字符串形式。

my $str1 = 'ABC'
my $str2 = '$str1 xyz'; # $str1 xyz
my $str3 = "$str1 xyz"; # ABC xyz

单引号保留原始字符串形式除了两种特殊场景,字符串中本身就有单引号’和反斜杠
如果字符串中包含单引号和反斜杠,需要额外添加一个反斜杠进行转义:

my $str1 = 'here is \' and \\' # here is ' and \

字符串的拼接使用’.’

my $str1 = 'ABC'.'_'.'xyz' # ABC_xyz

数组

数组就是标量的集合。数组的名称必须以’@'符号开始,初始化如下:

my @array1 = (1,4,9,16);
my @array2 = ('ZheJiang','HangZhou');

通过’[]'来获取数组中某个位置的元素,注意这个元素是一个标量!

$array1[0]; # 1

当然也可以通过下标来给数组赋值:

$array1[0] = 2;

scalar函数会返回数组的大小:

$numofvars = scalar @vars;
print '@vars has',$numofvars,"element \n";
# @vars has 3 element

使用for循环来遍历数组:

for my $var (@someArray) {
	sentences;
}

如果中途退出循环体,用last命令,相当于Python中的break语句。

for my $var (@someArray) {
	if (condition1) {
		last;
	}
	other sentences;
}

如果有嵌套的循环,last只会跳出最内层的循环。如果需要跳出最外层的循环,可以使用lable标记:

LABLE0:for my $var1 (@someArray1) {
	LABLE1:for my $var2 (@someArray2) {
		if (condition1) {
			last LABLE0;
		}
		other sentences;
	}
}

如果想略过循环体的后续语句进行下一次循环,而不是跳出循环,可以使用next命令:

for my $var (@someArray) {
	if (condition1) {
		next;
	}
	other sentences;
}

散列

散列就是无序的键值对,散列名必须以%开头,初始化如下:

%pcc_of = (
	'ZheJiang' => 'Hangzhou',
	'JiangXi' => 'NanChang',
	'XiZang' => 'LaSa',	
);

与数组类似,散列由圆括号包围。
依据键获取散列的值:

print $pcc_of{'JiangXi'},"\n";

注意:这里的键需要用花括号包围。
获取散列中的所有keys或values:

%pcc_of = (
	'ZheJiang' => 'Hangzhou',
	'JiangXi' => 'NanChang',
	'XiZang' => 'LaSa',	
);
print keys %pcc_of,"\n"
# ZheJiangJiangXi

散列可以通过delete函数进行删除操作

%pcc_of = (
	'ZheJiang' => 'Hangzhou',
	'JiangXi' => 'NanChang',
	'XiZang' => 'LaSa',	
);
delete $pcc_of{'ZheJiang'};
print keys %pcc_of,"\n"
# ZheJiang
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值