perl 引用备忘

简介:
 
  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,如需转载请自行联系原作者

相关文章
|
10月前
|
SQL 关系型数据库 MySQL
详解如何优雅实现先分组再组内排序取数据解决方案
本文介绍了在数据库查询中常见的业务需求:先对数据进行分组,然后在每组内按规则排序并取出特定记录。使用MySQL和Elasticsearch实现这一操作,并对比了不同方法的性能。具体包括: **MySQL实现**:通过窗口函数`ROW_NUMBER()`、子查询和JOIN关联查询三种方式实现分组排序取数据,并探讨了索引优化的效果。 **Elasticsearch实现**:利用`terms`聚合和`top_hits`聚合实现分组排序,适用于大规模数据场景。 推荐优先使用窗口函数,结合索引优化提升查询性能。对于小规模查询,可在应用层处理。 通过实例和性能对比,帮助读者选择最适合的实现方案。
370 16
详解如何优雅实现先分组再组内排序取数据解决方案
|
12月前
|
C语言
【C语言】sizeof 关键字详解
`sizeof` 关键字在C语言中用于计算数据类型或变量在内存中占用的字节数。它是一个编译时操作符,对性能没有影响。`sizeof` 可以用于基本数据类型、数组、结构体、指针等,了解和正确使用 `sizeof` 对于内存管理和调试程序非常重要。
763 2
|
存储 人工智能 编译器
【AI系统】昇腾数据布局转换
华为昇腾NPU采用独特的NC1HWC0五维数据格式,旨在优化AI处理器的矩阵乘法运算和访存效率。此格式通过将C维度分割为C1份C0,适应达芬奇架构的高效计算需求,支持FP16和INT8数据类型。此外,昇腾还引入了NZ分形格式,进一步提升数据搬运和矩阵计算效率。AI编译器通过智能布局转换,确保在不同硬件上达到最优性能。
707 3
|
存储 边缘计算 物联网
探索Edge Computing:边缘计算的崛起与实践
【10月更文挑战第3天】本文介绍了边缘计算的基本概念、工作原理、实施步骤以及面临的挑战。希望通过本文,读者能够了解边缘计算,并考虑在自己的项目中采用这种新的计算范式。
|
JavaScript 前端开发
Vue项目使用px2rem
Vue项目使用px2rem
一分钟了解什么是原码-反码-补码
一分钟了解什么是原码-反码-补码
|
机器学习/深度学习 人工智能 算法
阿里巴巴推出EMO,探索音频驱动的肖像视频生成的新领域
【2月更文挑战第9天】阿里巴巴推出EMO,探索音频驱动的肖像视频生成的新领域
2840 4
阿里巴巴推出EMO,探索音频驱动的肖像视频生成的新领域
|
网络协议 程序员 网络性能优化
传输层重要协议之UDP协议和TCP协议详解
传输层重要协议之UDP协议和TCP协议详解
|
存储 Java 索引
String和Char的区别
String和Char的区别
1798 1
|
Kubernetes 应用服务中间件 nginx
【K8S系列】快速初始化⼀个最⼩集群
【K8S系列】快速初始化⼀个最⼩集群
245 0