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

[经验分享] perl学习笔记4

[复制链接]

尚未签到

发表于 2015-12-28 14:18:24 | 显示全部楼层 |阅读模式
  匹配FRED 时,也能匹配上fred, Fred,可以使用修饰符/i
  点(.)不匹配换行符,这对于“单行中查找”的问题能很好解决。
  如果你的字符串中有换行符,那可以使用/s 这个修饰符。
  $_="I saw Barney\ndown at the bowling alley\nwith Fred\nlast night.\n";
if(/Barney.*Fred/s){
print "That string mentions Fred after Barney!\n";
}else{
print "No matched!"
}
  
  /x 修饰符,允许你在模式中加入任何数量的空白,以方便阅读。
  /-?\d+\.?\d*/ #这是什么含义?
  / -? \d+ \.? \d* /x #要好些
  由于/x 允许模式中使用空白,那么模式中的空格,制表符将被忽略。
  可以在空格前加上反斜线或者使用\t,但匹配空白更常用的方法是使用\s(\s*或\s+)。
  符号^(脱字字符◆)表示在字符串的开头进行匹配,而符号$则表示在结尾。
  词界锚定,\b,是针对单词使用的。如/\bfred\b/可以匹配上单词fred,但不能匹配frederick。
  非词界锚定为\B。它将在任何非\b 匹配的点上进行匹配。
  模式/\bsearch\B/将匹配searches, searching, searched, 但不能匹配search,或者researching。
  
  绑定操作符,=~
  对$_进行匹配只是默认的行为,使用绑定操作符(=~)将告诉Perl 将右边的模式在左边的字符串上进行匹配,而非对$_匹配。
  其含义是:“这个模式默认将对$_进行匹配,但此时将对左边的字符串进行匹配”。如果没有绑定操作符,则此表达式将对$_匹配。
  my $some_other = "I dream of betty rubble.";
if($some_other =~ /\brub/){
print "Aye, there's the rub.\n";
}else{
print "No matched!";
}
  
  输入的字符不会自动存储在$_中,除非行输入操作(<STDIN>)单独出现在while 循环的条件判断部分。
  
  模式内的内插
  my $what = “larry”;
  if(/^($what)/){ #在字符串前面进行匹配
  ...
  
  在命令行中输入需要匹配的模式,使用参数@ARGV:
  my $what = shift @ARGV;
  
  三个奇怪的变量:
  if("Hello there,neighor"=~/\S(\w+),/){
print "$&"."\n";
print "$`"."\n";
print "$'"."\n";
}
  输出:
  there,
Hello
neighor
  三个变量的值可能是空的。
  
  如果结尾有两个或两个以上的换行符◆,chomp 仅去掉一个。
  要分辨其是undef 还是空串,可以使用defined 函数,它将在为undef 时返回false,其余返回true。
  
  列表值也可以赋给变量:
  
  ($fred, $barney, $dino) = (“flintstone”, “rubble”, undef);
  ($fred, $barney) = ($barney, $fred) #交换两个变量
  
  可以使用如下的一行代码来创建按一个字符串数组:
  ($rocks[0],$rocks[1],$rocks[2],$rocks[3]) = qw/talc mica feldspar quartz/;
  如果之前的$rocks[7]非空。那,这个赋值语句将不会改变其值。
  @rocks = qw / bedrock slate lava /; #@rocks来引用整个数组。
  @copy = @quarry; #将一个数组中的值拷贝的另一个数组中
  
  pop 操作将数组的最后一个元素取出并返回:
  @array = 5..9;
  $fred = pop(@array); #$fred 得到9,@array 现在为(5,6,7,8)
  push,它可以将一个元素(或者一列元素)加在数组的末尾:
  push(@array,0); #@array 现在为(5,6,7,8,0)
  push @array,1..10; #@array 现在多了10 个元素
  
  push 和pop 对数组的末尾进行操作。
  unshift 和shift 对一个数组的开头进行操作。
  @array = qw# dino fred barney #;
  $m = shift (@array); #$m 得到“dino”, @array 现在为(“fred”, “barney”)
  unshift(@array,5); #@array 现在为(fred,barney,5)
  
  @rocks = qw{ flintstone slate rubble };
  print “quartz @rocks limestone\n”; #输出为5 种rocks 由空格分开
  输出:quartz flintstone slate rubble limestone
  
  Perl 最常用的默认变量:$_
  
foreach(1..10){ #使用默认的变量$_

print “I can count to $_!\n”;

  }

  
  @fred = 6 ..10;
  @barney = reverse (@fred); #得到10,9,8,7,6
  
  

运维网声明 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-157553-1-1.html 上篇帖子: [perl笔记] 下篇帖子: 安装hma master出错 Error: Package: perl-Mail-Sender-0.8.13-2.el5.1.noarch
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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