Perl数组和哈希-动态语言程序设计3

继上篇讲到Perl语言的简单变量类型,这篇文章讲Perl语言另外两个变量类型----复杂变量类型。Perl中一共只有三种变量类型,除了上一篇讲到的以 $ 符号开头的简单变量之外,还数组和哈希两种变量。
##ReadMore##

数组

数组变量

  • 以 @ 开头
  • 数组的的元素可以是数值、字符串或两者的混合

数组的赋值

  • @array = (2, 3, 4);
  • @array = (‘str1’, “\tstr2”, “str3”);
  • $str4=“str4”; @ array = (‘str1’, “\tstr2”, $str4);
  • @array = (1..3,4,5);
  • @day_of_month = ("01".."31")
  • @array = (e..f); @array= ($a, $b, @array, $g);
  • @array = ();

数组包含元素的个数


  • $Size= @array;

访问数组元素与遍历

$array[no];
@array=(1,2,3,4,5); $Element=$array[0];
foreach $Element(@array){print “$Element”;}
for($i=0; $i <@array;$I++){print “$array[$i]”;}

其他赋值操作


  • ($First)= @array;
  • ($First,$Second)= @array;
  • ($First,$Second,@SubAraay)= @array;
  • @SubAraay = @array[0,1]; 
  • @Array[0,1] = ("string", 46); 

有关数组的操作函数


  • push(@Array,$Str) ;               #在结尾添加一个元素
  • $Str =push(@Array) ;            #在结尾删除一个元素
  • unshift (@Array, $Str) ;          #在头添加一个元素
  • $Str = shift (@Array) ;           #在头删除一个元素
  • @sorted=sort(@Array);          #只有在赋值时有效
  • @ reversed=reverse(@Array); #只有在赋值时有效
  • @array=split(“; ”,$String);      #字符串拆解
  • $String =join(“;”, @array);         #字符串连接
  • chop(@array);                              #对每个元素去掉最后一个字符
  • chomp(@array);                          #对每个元素去掉最后一个换行符

哈希

哈希变量


  • 以%开头表示哈希变量
  • 集合((key1,value1), (key2,value2),… (keym,valuem))
  • Key   为数值或者字符串
  • Value 为数值、者字符串或者引用

哈希的赋值


  • %Hash=();
  • %Ages = ("Michael Caine", 39, "Dirty Den", 34, "Angie", 27);
  • @fruit = ("apples",17,"bananas",9,"oranges","none"); %fruitHash = @fruit;
  • $var1, $var2, %myarray) = @list
  • @Key=keys(%hash);
  • @value=values(%hash);

访问哈希表


  • $ages{"Michael Caine"}; # Returns 39
  • $ages{"Dirty Den"}; # Returns 34

增加元素

$hash{$key}=$value;

删除元素

delete ($Hash{$Key});

查找

if ( defined $hash{$element} ){print “$hash{$element}”;}

遍历

foreach $person (keys %ages){print "$person $ages{$person}\n";}
foreach $person (sort keys %ages){print "$person $ages{$person}\n";}

%records = ("Maris", 61, "Aaron", 755, "Young", 511);
while (($holder, $record) = each(%records)) {print "$holder $record \n";} 

Related Articles

Quote Of The Day