perl命令行-p参数

perl命令行-p参数,第1张

概述直接看 *** 作过程吧 [root@Centos5 perl]# cat passwd   1 root:x:0:0:root:/root:/bin/bash  2 bin:x:1:1:bin:/bin:/sbin/nologin  3 daemon:x:2:2:daemon:/sbin:/bin/bash  4 adm:x:3:4:adm:/ 直接看 *** 作过程吧
  [root@Centos5 perl]# cat passwd      1 root:x:0:0:root:/root:/bin/bash     2 bin:x:1:1:bin:/bin:/sbin/nologin     3 daemon:x:2:2:daemon:/sbin:/bin/bash     4 adm:x:3:4:adm:/var/adm:/sbin/nologin     5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin     6 sync:x:5:0:sync:/sbin:/bin/sync     7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown     8 halt:x:7:0:halt:/sbin:/sbin/halt     9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin     10 news:x:9:13:news:/etc/news:   

passwd文件有10行内容。如果遇到第6行则next到第7行,也就是不打印第6行内容。

  [root@Centos5 perl]# perl -pe 'next if /^6/' passwd      1 root:x:0:0:root:/root:/bin/bash     2 bin:x:1:1:bin:/bin:/sbin/nologin     3 daemon:x:2:2:daemon:/sbin:/bin/bash     4 adm:x:3:4:adm:/var/adm:/sbin/nologin     5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin     6 sync:x:5:0:sync:/sbin:/bin/sync     7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown     8 halt:x:7:0:halt:/sbin:/sbin/halt     9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin     10 news:x:9:13:news:/etc/news:   
奇怪了没有跳过啊,我的命令也没错。试试last呢?
  [root@Centos5 perl]# perl -pe 'last if /^6/' passwd          1 root:x:0:0:root:/root:/bin/bash     2 bin:x:1:1:bin:/bin:/sbin/nologin     3 daemon:x:2:2:daemon:/sbin:/bin/bash     4 adm:x:3:4:adm:/var/adm:/sbin/nologin     5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin   
这次正常执行了。这是为什么呢?看下perl -h   -n              assume "while (<>) { ... }" loop around program
  -p              assume loop like -n but print line also,like sed 看不出啥特殊含义来。 其实-p的真正含义是这样的? -p等于执行了 while (<>) {
         yourcode;
}continue{
         print;
} 这个语句对于next是不起作用的,也就是即使有next也会执行continue语句,但是对于last和redo是没有效果的。
  [root@Centos5 perl]# cat test.pl      #!/usr/bin/perl -w     use strict;     my $i = 0         while ($i <= 5) {             print "$i\n";             if ($i == 2) {                     last;             }     } continue {         $i++;       
先看last:结果如下没有问题。
  [root@Centos5 perl]# perl test.pl                
last改为next:
  [root@Centos5 perl]# perl test.pl |head -5                       
可见next没有生效,否则将会是一个死循环,打印0 1 2 2 2 ......无数个2. 总结

以上是内存溢出为你收集整理的perl命令行-p参数全部内容,希望文章能够帮你解决perl命令行-p参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1294471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存