Perl中的数组&哈希应用

哈希和数组是Perl中较为常用的结构,本文则重点讨论数组和哈希的一些基本用法,供广大喜爱Perl的同学们交流学习。

哈希

Perl中的哈希表类似于Python中的字典结构,由(键=>值)对构成,以"%"开头:

  • 定义:%hash = ('a'=>1,'b'=>2,'c'=>3);或 %hash = ('a',1,'b',2,'c',3);
  • 访问:$hash{'a'}; #直接用花括号访问
  • 插入元素:$hash{'d'} = 4; #('a'=>1,'b'=>2,'c'=>3,'d'=>4)
  • 删除键值对:delete $hash{'a'}; #('b'=>2,'c'=>3)
  • 清空:undef %hash;或 %hash = ();
  • 判断哈希中是否包含某key:exits($hash{$hey}); #存在返回1,不存在返回0

哈希遍历:

while(my($key,$value)=each%h){

  print"$key $value ";}


嵌套哈希:

  • 定义:%MulHash = (

      'fruit'=>{'apple'=>1,'banana'=>2},

      'vegetable'=>{'potato'=>1},

      'family'=>['wife','husband','son']);

ps:嵌套哈希定义时最外层用小括号,但嵌套内容必须是花括号,若嵌套数组,则需用中括号

  • 插入哈希元素:$MulHash{'weight'}={'jack'=>100,'mary'=>150}; #直接赋值即可
  • 元素访问:$MulHash{'fruit'}{'apple'} = 1;
  • 数组嵌套访问,把序号放在对应的地方即可:$MulHash{'family'}[0]='daughter';

嵌套哈希遍历:层序遍历即可

for $key1(sort keys %MulHash){

  for $key2 (sort $MulHash{$key1}){

    print $MulHash{$key1}{ $key2};

}}


数组

perl数组变量以“@”开头,是一种列表结构。

  • 定义:@array = ('a','b','c','d');
  • 元素访问:跟很多语言一样,Perl数组同样通过下标存取,第一个下标为0。$array[0];
  • 数组拷贝:@array1 = @array2;
  • 打印数组:print (@array," ");或print ("@array ");
  • 数组长度:$len = @array; #$len为数组@array的长度;
  • 子数组:@subarray1 = @array[0,1]; @subarray2 = @array[0..2]; #@subarray1=('a','b');@subarray2=('a','b','c');
  • 数组排序:@array2=sort(@array);#@array2=("a","b","c")
  • 数组反转:@array2=reverse(@array);或@array2=reversesort(@array);

数组遍历:

foreach $item (@list) {
    print "$item ";
}

for (my $i = 1; $i < @list; $i++){
  print "$key_word[$i]";

}

原文地址:https://www.cnblogs.com/tec-vegetables/p/3726111.html