perl 笔记

news/2024/7/1 20:42:14

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";


http://www.niftyadmin.cn/n/619882.html

相关文章

linux socket 缓冲区默认大小

1. tcp 收发缓冲区默认值[root www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 416153687380 &#xff1a;tcp接收缓冲区的默认值[root www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_wmem 4096 16384 416153616384 &#xff1a; tcp 发送缓冲…

perl alne

perl - Practical Extraction and Report LanguagePerl有很多命令行参数&#xff0c;通过它可以让你的程序更简练&#xff0c;并且可以写出很多只有一行命令的perl。在这篇文章里我们来了解一些常用的命令行参数。-----------命令行调用perl [ -sTtuUWX ][ -hv ] [ -V[:conf…

cg笔记

1. syslog client: vi /etc/syslog-ng/syslog-ng.conf source src{ internal(); unix-dgram("/dev/log"); udp(ip("172.27.32.19") port(514)); } 2. syslog server vi /etc/syslog.conf syslog.info -/data/dn3/dn3.log

linux socket close shutdown

socket关闭有2个close&#xff0c;shutdown 他们之间的区别: close-----关闭本进程的socket id&#xff0c;但链接还是开着的&#xff0c;用这个socket id的其它进程还能用这个链接&#xff0c;能读或写这个socket id shutdown--则破坏了socket 链接&#xff0c;读的时候可能…

linux 网络编程笔记

1. 一个进程中&#xff0c;开多个socket句柄&#xff0c;则在发送时&#xff0c;每个句柄独立绑定一个端口。在收包时&#xff0c;不会出现串包的现象。 2.socket句柄的生存期&#xff1a;如果遇到close&#xff08;&#xff09;&#xff0c;shutdown&#xff08;&#xff09;…

linux proc

proc文件系统是一个伪文件系统&#xff0c;它只存在内存当中&#xff0c;而不占用外存空间。由于系统的信息&#xff0c;如进程&#xff0c;是动态改变的&#xff0c;所以用户或应用程序读取proc文件时&#xff0c;proc文件系统是动态从系统内核读出所需信息并提交的。下面简要…

linux fork 笔记

1. fork出多个子进程&#xff1a; int status,i; for (i 0; i < 10; i) {status fork();if (status 0 || status -1) break; } if (status -1) {//error } else if (status 0) {//sub process } else {//parent process }

dns笔记

一、DNS报文角度来看主要是查看DNS报文首部中的标志字段[QR][opcode][AA][TC][RD][RA][(zone)][rcode]主要关注字段为TC字段&#xff0c;当TC字段为1时&#xff0c;表示应答总长度超过512字节&#xff0c;只返回前512个字节&#xff0c;这时DNS就需要使用TCP重发原来的查询请求…