常用Perl命令行参数应用的分析

技术常用Perl命令行参数应用的分析本篇文章为大家展示了常用Perl命令行参数应用的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Perl命令行应用介绍Perl有很多Perl

本文向您展示了对常见Perl命令行参数应用的分析。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

Perl命令行应用介绍

Perl有很多Perl命令行参数。通过它,我们有机会编写更简单的程序。在本文中,我们将了解一些常用的参数。

SafetyNetOptions

当使用Perl尝试一些聪明(或愚蠢)的想法时,不可避免地会出错。有经验的Perl程序员经常使用三个参数来提前找出错误。

-C是* * *。这个参数编译perl程序,但并不真正运行它。它检查所有语法错误。每次修改Perl程序后,我都会立即使用它来查找任何语法错误。

代码:

$perl-cprogram.pl

-W是第二个参数。它会提示你任何潜在的问题。5.6.0之后的Perl版本已经使用了警告;已替换-W .您应该使用usewarnings,因为它比-W更灵活.

-T是第三个参数。它将perl置于tain模式。在这种模式下,Perl将质疑来自程序外部的任何数据。例如,从Perl命令行、外部文件或CGI程序中读取的数据将在-T模式下被污染。

TED数据不能用来和外界互动。例如,使用系统调用中使用的文件名并打开。在perlsec文档中有更多关于什么数据会被污染的例子。

如果你想使用污点数据,你需要污点数据。污点是通过正则表达式实现的。这里我不会过多谈论污点模式。如果你想写的程序(比如CGI程序)需要接收用户不可知的输入,我推荐污点模式。

-d,perldefood,这里值得一提,但我们不能处理它。我建议阅读文档‘perldocperdebug’或RichardFoley的PerlDebuggerPocketReference。

Command-LinePrograms

下列Perl参数可以使简短的Perl程序在Perl命令行上运行。-e可以让Perl程序在Perl命令行上运行。例如,我们可以在Perl命令行上运行“HelloWorld”程序,而无需将其写入文件。

代码:

$perl-e'print'HelloWorld\n '

Multiple -e也可以同时使用,运行顺序取决于它出现的位置。

代码:

$ perl-e ' print ' hello ';-电子版《世界》

像所有的Perl程序一样,只需要程序的* * *行不需要用;结束。

虽然您也可以像往常一样引用模块,-M使它更容易。

代码:

$ perl-mlwp :3360 simple-e ' print ' http://www . example.com '

-M模块名与使用模块名相同。如果不想引入模块的默认值,可以使用-m-m模块名称与使用模块名称()相同。例如,在下面的示例中,由于默认情况下引入了head函数,所以在使用-m时不会使用它,导致没有输出。

代码:

$ perl-mlwp :3360 simple-e ' print ' http://www . example.com '

-m和-M使用=来介绍一个模块的特殊功能。

代码:

$ perl-MCGI=: standard-e ' print header '

这里介绍了CGI.pm的‘: standard’,可以使用表头功能。可以使用引号和逗号引入多个参数。

代码:

$perl-MCGI='header,start_html'-e'printheader,start_html '

这里我们介绍一下header和start_html函数。

ImplicitLoops

-n和-p增加了循环的功能,这样就可以逐行处理文件了。

代码:

$perl-n-e'somecode '文件1

这与以下程序相同。

代码:

管线:

while(){ 0

#你的代码在这里

}

;在Perl命令行中打开文件,并逐行读取。默认情况下,每行都保存在$ _中。

代码:

$perl-n-e'print'$。-$_ ' '文件

上面一行可以写成

代码:

管线:

while(){ 0

打印' $。-$_quot

;
}

输出当前行数$.和当前行$_.

-p可以让上面的程序变得更容易.-p会输出$_就像这样
CODE:
LINE:

while(<>){  #yourcodegoeshere  }continue{  printordie"-pdestination:$!\n";  }

continue在这里保证print在每次循环都会被调用.

使用-p,我们的打印行数程序可以改为
CODE:
$perl-p-e'$_="$.-$_"'

注意到那个LINE:标签?我们可以利用它来跳到下一个循环.使用nextLINE
CODE:
$perl-n-e'nextLINEunless/pattern/;print$_'

如果想在循环的前后做些处理,可以使用BEGIN或ENDblock.下面的这一行计算文件里的字数.

CODE:
$perl-ne'END{print$t}@w=/(\w+)/g;$t+=@w'file.txt

每一行所有匹配的字放入数组@w,然后把@w的元素数目递加到$t.ENDblock里的print***输出文件总字数.

还有两个参数可以让这个程序变得更简单.-a打开自动分离(split)模式.空格是缺省的分离号.输入根据分离号被分离然后放入缺省数组@F.由此,我们可以把上面的程序改写为
CODE:
$perl-ane'END{print$x}$x+=@F'file.txt

你也可以通过-F把缺省的分离号改为你想要的.例如把分离号定为非字符:
CODE:
$perl-F'\W'-ane'END{print$x}$x+=@F'file.txt

下面通过Unixpassword文件来介绍一个复杂的例子.Unixpassword是文本文件,每一行是一个用户记录,由冒号:分离.第7行是用户的登录shell路径.我们可以得出每一个不同shell路径被多少个用户使用:
CODE:
$perl-F':'-ane'$s{$F[6]}++;'\
>;-e'END{print"$_:$s{$_}"forkeys%s}'/etc/passwd

虽然现在不是一行,但是你可以看出使用参数可以解决什么问题.

RecordSeparators

以前我提到过$/和$\--输入,输出分隔号.$/用来分隔从文件句柄里读出的数据,缺省$/分隔号是\n,这样每次从文件句柄里就会一行行的读取.$\缺省是空字符,用来自动加到要print的数据尾端.这就是为什么很多时候print都要在末尾加上\n.

$/和$\可与-n-p一起使用.在Perl命令行上相对应为-0(零)和-l(这是L).-0后面可以跟一个16进制或8进制数值,若是16进制数,需要使用前缀x.这个值用来付给$/.-0表示以null字符串作为分格符,-00打开段落模式,-0777打开slurp模式(即可以一次把整个文件读入),这与把$/设为空字符和undef一样效果.

单独使用-l有两个效果,***自动chomp输入分隔号,第二把$/值付给$\(这样print的时候就会自动在末尾加\n)

我个人常常使用-l参数,用来给每一个输出加\n.例如

CODE:
$perl-le'print"HelloWorld"'

In-PlaceEditing

使用已有的参数我们可以写出很有效的Perl命令行程序.常见的UnixI/O重定向:

CODE:
$perl-pe'somecode'<input.txt>output.txt

这个程序从input.txt读取数据,然后做一些处理再输出到output.txt.你当然也可以把输出重定向到同一个文件里.

上面的程序可以通过-i参数做的更简单些.
-i把源文件更名然后从这个更名的源文件里读取.***把处理后的数据写入源文件.如果-i后跟有其他字符串,这个字符串与源文件名合成后来生成一个新的文件名.此文件会被用来储存原始文件以免被-i参数覆盖.
注意:使用-i参数后,文件将作为程序的标准输出,所以必须使用-p参数,或者程序里要包含print等输出语法,不然文件将为空.

这个例子把所有php字符替换为perl:

CODE:
$perl-i-pe's/\bPHP\b/Perl/g'file.txt

程序读取文件的每一行,然后替换字符,处理后的数据重新写入(即覆盖)源文件.如果不想覆盖源文件,可以使用

CODE:
$perl-i.bak-pe's/\bPHP\b/Perl/g'file.txt

这里处理过的数据写入file.txt,file.txt.bak是源文件的备份.

上述内容就是常用Perl命令行参数应用的分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/84209.html

(0)

相关推荐

  • ps内容识别填充,照片中混入别的人怎么p掉

    技术ps内容识别填充,照片中混入别的人怎么p掉照片中混入别的人怎么p掉?照片中混入别的人怎么p掉ps内容识别填充,如何去除照片中多余的人物,杂物,我讲一种最简单快速的办法,需要有最新版本的 PS CC 2019,这个功能

    生活 2021年10月22日
  • 怎样解析Java的异常处理机制

    技术怎样解析Java的异常处理机制这期内容当中小编将会给大家带来有关怎样解析Java的异常处理机制,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。你觉得自己是一个Java专家吗?是否肯定

    攻略 2021年10月23日
  • MAVEN安装

    技术MAVEN安装 MAVEN安装一、maven下载
    下载地址:https://maven.apache.org/download.cgi
    二、配置镜像源(conf文件夹下的settings.xml文件

    礼包 2021年10月20日
  • JavaScript编程语言概述

    技术JavaScript编程语言概述 JavaScript编程语言概述产生背景JavaScript最初由Netscape的Brendan Eich设计,最初将其脚本语言命名为LiveScript,后来N

    礼包 2021年11月22日
  • 现在做什么生意赚钱,今年有什么商机能创业赚钱

    技术现在做什么生意赚钱,今年有什么商机能创业赚钱今年什么商机能赚到钱呢现在做什么生意赚钱?
    其实在今天的社会中,在我们身边,这生活中有太多赚钱的机会,只是你能不能发现或者说你愿意不愿意去做,如果大家都知道了赚钱的机会,那

    生活 2021年10月31日
  • 家长的话怎么写一年级,家长对一年级孩子的寄语和期望

    技术家长的话怎么写一年级,家长对一年级孩子的寄语和期望1、孩子家长的话怎么写一年级,转眼间你入学已经一年了。一年来,你很快适应了小学的生活,也付出了很多的努力,在这里,妈妈为你的成长而欣喜。同时,也和你一样,对辛勤教育你

    生活 2021年10月25日