乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
perl 0.11 引用
2016-05-22 06:19:03
58
0
0
admin
ref(XXX) 判断一个引用是什么数据结构 #变量引用 ```perl my $var=1; my $ref=\$var; print ref($ref)."\n"; print "$ref\n"; print ${$ref}."\n"; [root@test ~]# ./a.pl SCALAR #标量 SCALAR(0x19adba0) #标量和地址 1 ``` *** #数组引用 ##创建数组的引用 ```perl my @array1 = qw { aaa bbb ccc }; my @array2 = qw { 111 222 }; push @array2 , \@array1; my $ref= \@array2; print 'ref($ref)='.ref($ref)."\n"; print '${$ref}[0]='.${$ref}[0]."\n"; print '$ref->[1]='.$ref->[1]."\n"; print '$ref->[2][1]='.$ref->[2][1]."\n"; $ref->[2][1]="changed succeed"; print '$array1[1]='.$array1[1]."\n"; [root@test ~]# ./a.pl ref($ref)=ARRAY ${$ref}[0]=111 $ref->[1]=222 $ref->[2][1]=bbb $array1[1]=changed succeed ``` ##直接用引用创建数组 ```perl my $ref; $ref->[0] = "1"; $ref->[1]->[0] = "21"; $ref->[1]->[1] = "22"; $ref->[2] = "3"; print '@{$ref}[0]='.@{$ref}[0]."\n"; print '$ref->[1]->[0]='.$ref->[1]->[0]."\n"; [root@test ~]# ./b.pl @{$ref}[0]=1 $ref->[1]->[0]=21 ``` *** #hash引用 ##创建hash的引用 ```perl my %hash1 = ( "first" => "aaa", "second" => "bbb", "third" => "ccc" ); my %hash2 = ( "2first" => "11", "2second" => \%hash1, "2third" => "22" ); my $ref = \%hash2; print 'ref($ref)='.ref($ref)."\n"; print '${$ref}{"2first"}='.${$ref}{"2first"}."\n"; print '$ref->{"2second"}->{"first"}='.$ref->{"2second"}->{"first"}."\n"; $ref->{"2second"}->{"third"} = "changed succeed"; print '$hash1{"third"}='.$hash1{"third"}."\n"; [root@test ~]# ./a.pl ref($ref)=HASH ${$ref}{"2first"}=11 $ref->{"2second"}->{"first"}=aaa $hash1{"third"}=changed succeed ``` ##直接用引用创建hash ```perl my $ref; $ref->{"first"} = 1; $ref->{"second"}->{"first"} = 21; $ref->{"second"}->{"second"} = 22; $ref->{"third"} = 3; print Dumper %{$ref}; print $ref->{"second"}->{"second"}."\n"; ``` *** #符号引用 **不能用my 不能用use strict, 不建议使用** ```perl $str="var"; $var="it is me"; print $$str."\n"; # 理解成$( $str ) => $( var ) => $var => "it is me" 很妖的写法 [root@test ~]# ./a.pl it is me ```
上一篇:
perl 0.10 多进程编程
下一篇:
perl 0.12 变量修饰符
文档导航