且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

perl 引用备忘

更新时间:2022-09-27 14:13:34


  1. //$ref是一个匿名数组引用,同时嵌套着匿名数组引用,匿名散列引用 
  2. my $ref = [1,2,3,['a','b','c'],{a=>1,b=>2,c=>3,},]; 
  3.  
  4. //访问其中的一个元素1
  5. printf "%d\n",$ref->[0]; 
  6. printf "%d\n",$$ref[0]; 
  7. printf "%d\n",${$ref}[0]; 
  8.  
  9. //访问其中的一个嵌套的匿名数组引用的值a
  10. printf "%s\n",$ref->[3]->[0]; 
  11. printf "%s\n",$$ref[3][0]; 
  12. printf "%s\n",${$ref}[3][0]; 
  13.  
  14. //访问其中的一个嵌套的匿名散列引用
  15. printf "%d\n",$ref->[4]->{a}; 
  16. printf "%d\n",${$ref}[4]{a}; 
  17.  
  18. print @{$ref->[3]},"\n"; 
  19. print keys %{$ref->[4]},"\n"; 
  20. print values %{$ref->[4]},"\n"; 
  21.  
  22. my $i = 0
  23.  
  24. while ($i < 3) { 
  25.        print $ref->[3]->[$i],"\n"; 
  26. }continue{$i++;}; 
  27.                                   

 一个使用引用的sample


  1. my $ref = {}; 
  2.  
  3. open my $file,'<','/etc/passwd' or die "$!\n"; 
  4.  
  5. while (<$file>) { 
  6.        chomp; 
  7.        my @array = split /:/; 
  8.  
  9.        if ($array[6]) { 
  10.           if (exists $ref->{$array[6]}) { 
  11.               ${$ref}{$array[6]} ++; 
  12.           } 
  13.           else { 
  14.               ${$ref}{$array[6]} = 1; 
  15.           } 
  16.        } 
  17.  
  18.  
  19. close $file; 
  20.  
  21. =head 
  22. for my $str (sort keys %$ref) { 
  23.     printf "%-20s%d\n",$str,$ref->{$str}; 
  24. =cut 
  25.  
  26. while (my ($key,$val) = each %$ref) { 
  27.        printf "%-20s%d\n",$key,$val; 

 本文转自dongfang_09859 51CTO博客,原文链接:http://blog.51cto.com/hellosa/703370,如需转载请自行联系原作者