perl_list_hash

数组:list

数组与列表可指代同一个东西,但是列表侧重于数据,而数组表示对数据的引用。

索引:从0开始

数组间各元素以,分隔

数组用()括起来

1
(1,3,5)

范围操作符:num..num

数组的引用:@

1
2
3
@a=(1,2,3,4,5)
@b=(1..5)
#@a与@b相等

qw(quote word)简写

qw函数在llist中可以省去重复的字符串

1
2
3
4
#这两个相同
@num=qw(1 3 5)
@num=(1,3,5)
#同样的这个括号也是可选则别的

列表的赋值

1
($a,$b)=("sunshine","girl")

交换两个变量

1
2
#这是我见过最快的交换两个变量的值的方法了,不需要借助中间变量
($a,$b)=($b,$a)

取数组中的值

下标、函数

1
2
3
4
5
6
7
8
9
10
@a=(1,2,3,4,5)
#可使用下标取值的方式,与python、shell不同,下标并不用[]。
$a{0},$a{2}
#更加常用的方式,将数据从数组中取出来,数组长度变短
shift/unshift #从头依次取出、添加数据
shift(@a);-->1
unshift(@a,0);
pop/push #从尾依次取出、添加数据
pop(@a);-->5
push(@a,6);

foreach循环所有值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#循环所有值
foreach $a(1..10){
print $a,"\n";
}

@a=(1..10);
foreach $a(@a){
print $a,"\n";
}
#$a或者$_是控制变量,控制变量依次迭代从列表中取一个新值。
foreach $_(@a){
print $_,"\n";
}
#控制变量可以不写,默认变量$_
foreach (@a){
print $_,"\n";
}

reverse逆序

1
2
3
4
5
6
7
8
@a=(1..10);
@b=reverse(@a);
#括号可以省略
@b=reverse @a;
#范围操作符也可省略括号
@b=reverse 1..10;

#-------------perl中所有没有必要的括号都可以省略--------------

scalar强制转换列表为标量

1
2
@a=(1..10)
scalar @a;-->10