设为首页 收藏本站
查看: 772|回复: 0

[经验分享] perl实例详解第四版笔记1基本内容概述

[复制链接]

尚未签到

发表于 2018-8-31 09:28:36 | 显示全部楼层 |阅读模式
  1.管道:在perl中使用管道时,管道用于把系统命令的输出作为perl的输入,或者将perl的输出作为系统命令的输入。管道又称为过滤器(filter)。用户必须通过open系统调用来使用管道。该系统调用接受两个参数:一个是用户自定义的句柄,另一个是操作系统命令,并需要在操作系统命令的前面或者后面加上一个“|”符号。如果“|”符号出现在系统命令之前,那么表示该命令将把perl的输出内容作为命令的输入内容,否则表示perl将会读取系统命令的输出作为自身的输入内容。
  [root@dou shili]# cat 1.pl
  #!/usr/bin/perl -w
  use strict;
  open(my $fh, "ls |") or die "cannt perform command ls:$!";
  while() {print;};
  close $fh;
  print "-" x 5 . "\n";
  open(my $f, "| sort") or die "cant get perl command's output:$!";
  print $f "dogs\ncats\nbirds\n";
  close $f;
  [root@dou shili]# ls
  1.pl  file  reandw.pl
  [root@dou shili]# perl 1.pl
  1.pl
  file
  reandw.pl
  -----
  birds
  cats
  dogs
  2.一些正则表达式元字符:
  ^:匹配行首
  $:匹配行尾
  a.c: 匹配一个a,后面任意一个字符,然后后面是一个c字符
  [abc]:匹配a或者b或者c
  [^abc]:不匹配abc的其他任何字符
  [0-9]:匹配0-9之间的任意一个数字
  ab*c:匹配a然后加上任意多个b然后后面是c的情况
  ab+c:匹配a后面跟大于等于1个b最后是一个c的情况
  ab?c:匹配a后面跟0个或者1个b最后是一个c的情况
  (ab)+c:匹配大于等于一个ab后面跟一个c的情况
  (ab)(c):匹配ab并将其赋值与变量$1,同时捕获c并赋予变量$2.
  3.特殊的文件句柄ARGV
  perl通过@ARGV数组保存了命令行提供的参数内容。如果用到了ARGV文件句柄,则这些命令行参数将被视为文件;否则视为命令行字符串。
  [root@dou shili]# cat 1
  444
  hello
  [root@dou shili]# cat file
  1
  Hello World
  [root@dou shili]# cat 3.pl
  #!/usr/bin/perl -w
  use strict;
  print "@ARGV\n";
  while() {
  print;
  }
  [root@dou shili]# perl 3.pl 1 file
  1 file
  444
  hello
  1
  Hello World
  4.引用reference
  perl的引用本质上是一个标量型变量,负责保存另一个变量的地址。在创建引用时,需要使用反斜杠符号。
  [root@dou shili]# cat 4.pl
  #!/usr/bin/perl -w
  use strict;
  #create variables
  my $age = 18;
  my @array = qw(hello world come on);
  my %home = ( owner => "me",
  benben => "dell",
  shuihu => "mingpai",
  );
  #create references
  my $pointer1 = \$age;
  my $pointer2 = \@array;
  my $pointer3 = \%home;
  my $pointer4 = [ qw(black white red yellow) ];
  my $pointer5 = { country => "china", province => "shandong", };
  #dereference
  print "$$pointer1\n";
  print "@$pointer2\n";
  print "%$pointer3\n";
  print "$pointer3->{benben}\n";
  print "$pointer4->[2]\n";
  print "$pointer5->{country}\n";
  [root@dou shili]# perl 4.pl
  18
  hello world come on
  %HASH(0x1a54d720)
  dell
  red
  china
  5.对象:perl中的对象是一种特殊类型的变量。在perl中,一个类代表着含有一组变量(属性)与函数(方法)的一个包。perl没有提供专门的关键字class。其中,属性就是能够描述这个对象的变量;而方法则是一种特殊的函数,允许用户创建并操作给定的对象。在创建对象时,用户需使用bless函数。
  [root@dou shili]# cat 5.pl
  #!/usr/bin/perl -w
  use strict;

  # create a>  package pet;
  sub new { #constructor
  my $class = shift;
  my $pet = {
  name => "dog",
  owner => "me",
  type => "guochan",
  };
  bless($pet,$class);
  # return a pointer to the object
  sub set_pet { # accessor methods
  my $self = shift;
  my ($name,$owner,$type) = @_;
  $self->{'name'} = $name;
  $self->{'owner'} = $owner;
  $self->{'type'} = $type;
  }
  sub get_pet {
  my $self = shift;
  while(my ($key,$value) = each(%$self)) {
  print "$key: $value\n";
  }
  }
  }

  # instantiation a>  my $cat = pet->new();
  #create an object with a constructor method
  $cat->set_pet("dahuanggou","tom","miguochan");
  #access the object with an instance
  $cat->get_pet;
  [root@dou shili]# perl 5.pl
  owner: tom
  name: dahuanggou
  type: miguochan


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-559202-1-1.html 上篇帖子: Perl随机读取文件行的方法 下篇帖子: perl检测无效符号链接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表