push @arr_1, ['domain', 'rr_type', 'rr'],['2','22'];
my $ref = \@arr_1;
for my $key (@$ref)
{
#print $key->[1];
print @{$key}[0];
}
my %hash = (
'A'=>'1A',
'B'=>'2B',
'C'=>'3C'
);
my $ref_hash = \%hash;
print @{$ref_hash}{'A','B'};
hash解引用,两种方法:
my %hash = (
26 'A'=>'1A',
27 'B'=>'2B',
28 'C'=>'3C'
29 );
30 my $ref_hash = \%hash;
32 %{$ref_hash}->{whois} = 'whoishash';
33 $ref_hash->{twoo} = 'twoo';
1.整个列表都封装在圆括弧里,而不是花括弧里,因为你是在给一个列表赋值而不是给引用赋值。如
果你想要一个指向数组的引用,那么你要使用方括弧.
2.在每一对相邻的花括弧或方括弧之间有一个隐含的 ->.
3.push @arr,[ @arr_1]; 构建二维数组。
push @arr, @arr_1; 仍然是一维数组。
4.高维数组的引用:
my @arr;
my $ref_arr = \@arr;
print "ref: @{$ref_arr}"#输出每一行的地址。
print "ref: @{$ref_arr->[2]}"#输出第三行的地址。
print "ref: @{$ref_arr->[2]}[3]"#输出第三行的第四个元素。
花括号表示引用。
5.数组引用形式:
22 my $arr_ref =
[
["fred","cook"],
["gro","ad","fk"],
["1","2","3","4"],
[ ["a1","a2","a3"],["b1","b2"] ]
];
6.$#表示数组中行数-1。
7. $#xxx: 显示数组中行数-1
$#$xx: 标量, 都返回-1.
1 #!/usr/bin/perl -w
2 use Data::Dumper;
3 my @conf =
4 (
5 ['C11','C12','C13'],
6 ['C21','C22'],
7 ['C31','C32','C33'],
8 ['c41']
9 );
10 my $ref_conf = \@conf;
11 print "test: $#$ref_conf\n";
12 print "test: $#$conf\n";
13 print "t3: $conf\n";
14 print "t4: $ref_conf\n";
15 my @t = ('a');
16 print "t: $#$t\n";
map的使用, 例子:
1 #!/usr/bin/perl -w
2 use Data::Dumper;
3 my @conf =
4 (
5 ['C11','C12','C13'],
6 ['C21','C22'],
7 ['C31','C32','C33'],
8 ['c41']
9 );
10
11 my $ref = \@conf;
12 my @ldns = map { [ $_,"#" ] ,"@@"}@$ref;
13 print Dumper(@ldns);
14 print $ldns[1];
map前可以加上sort操作:
my @ldns = sort{$a->[0]<=>$b->[0]} map { [$_->[0],"#"] }@$ref;
map中还可以插入函数.
如:
my @arr = map {$_->[0] = 'wori';$_}@$ref;
向函数传递键值对
14 fn({key=>155}); #输出155
15
16 sub fn
17 {
18 my ($a) = @_;
19 print $a->{key};
20 }
这种语法也是可以的:
my $tmp = "a,b,c,d";
my ($a,$b) = (split ',',$tmp)[0,2];
perl下的stat函数和shell下的stat命令的功能基本一致,也是取得文件的各类具体信息:
stat()函数返回一个数组,下面是数组各个元素的含义:
0 dev 设备号 驱动器号(C:通常是2,D:通常是3,等等)
1 ino 索引节号 总是0
2 mode 文件的方式 无
3 nlink 链接号 通常为0;Windows NT;文件系统允许链接
4 uid 文件所有者的用户ID(UID)总是0
5 gid 文件所有者的组ID(GID)总是0
6 rdev 特殊文件信息 驱动器号(重复)
7 size 文件大小(以字节计)文件大小(以字节计)
8 atime 上次访问的时间 上次访问的时间
9 mtime 上次修改的时间 上次修改的时间
10 ctime Inode修改时间 文件的创建时间
11 blksz 磁盘块的大小 总是0
12 blocks 文件中的块的数量 总是0
例子:
获取某个文件的创建时间和最后一次修改时间,
my @array = stat("test.html");
print "$array[10]\n";
print "$array[8]\n";