本文是关于如何全面分析Perl命令行应用程序。边肖觉得挺实用的,所以分享给大家学习。希望你看完这篇文章能有所收获。让我们和边肖一起看看。
让我们关注一下Perl命令行的概念。在这里,我们将从五个方面为您介绍。Perl有许多命令行参数。让我们了解一些常用的参数。
Perl命令行介绍
Perl有许多命令行参数。通过它们,我们有机会编写更简单的程序。在本文中,我们了解一些常用的参数。
***部分:SafetyNetOptions安全网参数
当使用Perl尝试一些聪明(或愚蠢)的想法时,不可避免地会出错。有经验的Perl程序员经常使用三个参数来提前找出错误。
1:-C
这个参数编译perl程序,但并不真正运行它。它检查所有语法错误。每次修改Perl程序后,我都会立即使用它来查找任何语法错误。
$perl-cprogram.pl
2:-W
它会提示你任何潜在的问题。5.6.0之后的Perl版本已经使用了usewarnings已替换-W .您应该使用usewarnings,因为它比-W更灵活.
3:-T
它将perl置于tain模式。在这种模式下,Perl会质疑任何来自程序外部的数据。例如,从命令行、外部文件或CGI程序中读取的数据。
这些数据将在T模式下被污染。
第二部分:命令行Perl参数:可以让短小的Perl程序运行在命令行.
1:-e
您可以让Perl程序在命令行上运行。
例如,我们可以在命令行上运行“HelloWorld”程序,而无需将其写入文件,然后再运行它。
$perl-e'print'HelloWorld\n '
Multiple -e也可以同时使用,运行顺序取决于它出现的位置。
$ perl-e ' print ' hello ';-电子版《世界》
像所有的Perl程序一样,只需要程序的* * *行不需要用;结束。
2:-M
模块可以照常引用。
$ perl-mlwp :3360 Simple-e ' getstore(' http://www . 163.com/',' 163.html')' # #下载整个网页
-M模块名与使用模块名相同。
第三部分:隐式循环
3:-n
增加了循环的功能,让你可以一行一行的处理文件。
$ perl-n-e ' print;1 . txt # # # # # # $ perl-ne ' print;'1.txt
这与以下程序相同。
管线:
while(;){
打印;
}
;在命令行中打开文件并逐行读取。默认情况下,每行都保存在$ _中。
$perl-n-e'print'$。-$_ ' '文件
上面一行可以写成
管线:
while(;){
打印' $。-$_'
}
输出当前行号$。和当前行号$ _
:-p,与-n相同,但也将打印$ _的内容。
如果你想在循环前后做一些事情,你可以使用BEGIN或者ENDblock。下面一行计算文件中的字数。
$ perl-ne ' END { print $ t } @ w=/(\ w)/g;$t=@w'file.txt
将每行中所有匹配的单词放入数组@w中,然后将@w的元素数加到$ t.endblock中print***输出文件的总单词数中.
还有另外两个参数可以使这个程序更容易。
5:-a
打开自动分割模式。空格是默认的拆分号。输入根据拆分号进行拆分,然后放入默认数组@F
使用-a,上面的命令可以编写如下:
$ perl-ane ' end { print $ x } $ x=@ f ' file . txt # #使用-a。
6:-F
将默认分隔号更改为您想要的。例如,如果分隔号设置为非字符,则上述命令可以更改为:
$ perl-F ' \ W '-an ' end { print $ x } $ x=@ F ' file . txt
下面是一个通过Unixpassword文件的复杂例子。Unixpassword是一个文本文件,每行都是一条用户记录。
用冒号:分隔。第7行是用户的登录shell路径。我们可以找出有多少用户在使用每个不同的shell路径:
$ perl-F ' : '-ane ' $ s { $ F[6]};'\;-e ' END { print ' $ _ : $ s { $ _ } ' forkeys % s } '/etc/passwd
/p>
虽然现在不是一行,但是你可以看出使用参数可以解决什么问题.
第四部分:RecordSeparators数据分隔符
$/和$\--输入,输出分隔号.
$/用来分隔从文件句柄里读出的数据,缺省$/分隔号是\n,这样每次从文件句柄里就会一行行的读取
$\缺省是空字符,用来自动加到要print的数据尾端.这就是为什么很多时候print都要在末尾加上\n.
$/和$\可与-n-p一起使用.在命令行上相对应为-0(零)和-l(这是L).
-0后面可以跟一个16进制或8进制数值,这个值用来付给$/.
-00打开段落模式,-0777打开slurp模式(即可以一次把整个文件读入),这与把$/设为空字符和undef一样效果.
单独使用-l有两个效果:
***:自动chomp输入分隔号
第二:把$/值付给$\(这样print的时候就会自动在末尾加\n)
1:-l参数,用来给每一个输出加\n.例如
$perl-le'print"HelloWorld"'
第五部分:原位编辑
使用已有的参数我们可以写出很有效的命令行程序.常见的UnixI/O重定向:
$perl-pe'somecode'<input.txt>>output.txt
这个程序从input.txt读取数据,然后做一些处理再输出到output.txt.你当然也可以把输出重定向到同一个文件里.
上面的程序可以通过-i参数做的更简单些.
2:-i
把源文件更名然后从这个更名的源文件里读取.***把处理后的数据写入源文件.
如果-i后跟有其他字符串,这个字符串与源文件名合成后来生成一个新的文件名.
此文件会被用来储存原始文件以免被-i参数覆盖.
这个例子把所有php字符替换为perl:
$perl-i-pe's/\bPHP\b/Perl/g'file.txt
程序读取文件的每一行,然后替换字符,处理后的数据重新写入(即覆盖)源文件.
如果不想覆盖源文件,可以使用
$perl-i.bak-pe's/\bPHP\b/Perl/g'file.txt
这里处理过的数据写入file.txt,file.txt.bak是源文件的备份.
以上就是如何全面解析Perl命令行应用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/84213.html