Perl和Java不同,它是一种弱类型语言。其实Java也在弱化类型,比如高版本的JDK中可以使用var来接收变量,而不是具体的某一种强类型变量。Perl这点和JS比较相似。
正因为此,Perl变量不需要指定类型,Perl 解释器会根据上下文自动选择匹配类型。
Perl 有三个基本的数据类型:标量、数组、哈希。
一、标量
标量是 Perl 语言中最简单的一种数据类型。这种数据类型的变量可以是数字,字符串,浮点数,不作严格的区分。在使用时在变量的名字前面加上一个 $,表示是标量。
其实可以把它理解成Java这类强类型语言的所有类型的一个统称。
my $num = 10;
print("\$num = $num\n");
输出:
$num = 10
my $str = "10";
print("\$str = $str\n");
输出:
$str = 10
二、数组
数组变量以字符 @ 开头,索引从 0 开始,使用括弧将元素括起来,如:
@arr1=(1,2,3)
@arr2=("goole", "runoob", "taobao")
print("arr1 = @arr1\n");
print("arr2 = @arr2\n");
分别输出:
1 2 3
goole runoob taobao
三、哈希
哈希是一个无序的 key/value 对集合。可以使用键作为下标获取值。哈希变量以字符 % 开头。
my %data = ('g' => 'google.com', 'r' => 'runoob.com', 't' => 'taobao.com');
my %num =('a'=>1,'b'=>2);
我们看到,这和Java中的HashMap比较类似,可以说是一类型的东西,key都不可以重复,value可以重复。
my %hashmap = ("a" => 123, b => 123, c => 456);
print(%hashmap);
输出:
b123a123c456
可见它是无序的,值可以重复。
my %hashmap = ("a" => 123, a => 321, c => 456);
print(%hashmap);
输出:
c456a321
可见,它是无序的,键是不可以重复的,如果重复,后定义的就会覆盖先定义的。
下面我们总结一下哈希的特点:
- 无序的;
- KV的键值对;
- key不能重复,如果key重复会被后面添加的给覆盖;
- value可以重复。