如何全面解析Perl命令行应用

技术如何全面解析Perl命令行应用本篇文章给大家分享的是有关如何全面解析Perl命令行应用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。和大家重点讨论一下P

本文是关于如何全面分析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

(0)

相关推荐

  • C++为什么构造函数中应该做的是初始化而不是赋值

    技术C++为什么构造函数中应该做的是初始化而不是赋值本篇内容介绍了“C++为什么构造函数中应该做的是初始化而不是赋值”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这

    攻略 2021年11月29日
  • Hive数据如何导入导出mysql

    技术Hive数据如何导入导出mysql这篇文章给大家分享的是有关Hive数据如何导入导出mysql的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hive定位:ETL(数据仓库)工具将数据从来源

    攻略 2021年12月10日
  • 智能机怎么刷机,nokla智能机怎么刷机

    技术智能机怎么刷机,nokla智能机怎么刷机有两种刷机。1软刷:恢复出厂设置 2硬刷:(个人不建议)刷机前要备份好重要数据像手机号码什么的 。下面是硬刷过程(搜索粘贴的)  一、准备  1、下载navifirm  2、下

    生活 2021年10月22日
  • Vue 登录Id的传值+ 购物车的结算

    技术Vue 登录Id的传值+ 购物车的结算 Vue 登录Id的传值+ 购物车的结算一、登录Id的传值1、传值if (res.data.code !="") {this.$message({message

    礼包 2021年10月28日
  • 具里面是两横还是三横,具有人说的具是据还是具

    技术具里面是两横还是三横,具有人说的具是据还是具具字的上半部分是『鼎』具里面是两横还是三横,《說文解字》中注:共置也。从廾,从貝省。古以貝爲貨。字的本意是双手捧着鼎器,准备饭食或酒席,有准备、备办的意思。
    『鼎』字的上面

    生活 2021年10月27日
  • vue中len函数的功能是什么(vue中babel作用)

    技术vue中babel指的是什么意思这篇文章将为大家详细讲解有关vue中babel指的是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 在vue中,

    攻略 2021年12月22日