如何解析Perl命令行程序用法

技术如何解析Perl命令行程序用法如何解析Perl命令行程序用法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Perl命令行程序命令行程序下面的几个Pe

如何分析Perl命令行程序的用法,针对这个问题,本文详细介绍了相应的分析和解答,希望能帮助更多想要解决这个问题的朋友找到更简单更容易的方法。

Perl命令行程序

命令行程序

下面的Perl参数可以使简短的Perl程序在命令行上轻松运行。-e允许编译器在命令行上直接执行Perl代码。例如,我们可以直接在命令行上运行“HelloWorld”程序,而无需将其编写为Perl程序。

$Perl

-e'print'HelloWorld\n '

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

$Perl

-e ' print ' hello ' $ $ '-e ' print ' world \ n ' '

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

虽然您也可以使用-e来引用模块,-M使它更容易。

$Perl

-mlwp :3360简单-e ' print ' http://www . example.com '

-M模块名与使用模块名相同。有些模块有默认的模块导入。如果不想导入它们,可以使用-m-m模块名,如usemodule(),关闭默认导入。例如,在下面的示例中,因为默认情况下导入head函数,所以在使用-m时不会执行它,从而导致没有输出。

$Perl

-mlwp :3360简单-e ' print ' http://www . example.com '

-m和-M有许多方便的语法来帮助你使用它们。您可以在=

$Perl

-MCGI=: standard-e ' print header '

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

$Perl

-MCGI='头,开始_html'-e '打印头,开始_html '

我们在这里介绍了header和start_html函数。

Perl命令行程序之隐式循环

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

$Perl

-n-e'somecode'file1

这与以下程序相同。

管线:

while(){ 0

#你的代码在这里

}

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

$Perl

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

上面一行可以写成

管线:

while(){ 0

打印' $。-$_'

}

输出当前行号$。和当前行号$_。-p可以使上述程序更容易。-p将输出$ _的内容,如下所示:

管线:

while(){ 0

#你的代码在这里

}继续{

printordie'-pdestination:$!\n'$$

}

继续这里保证打印将在每个循环中调用。

使用-p,我们的打印行数程序可以更改为

$Perl

-p-e'$_='$。-$_''

在这种情况下,我们不需要显式调用print函数,因为-p选项已经调用了它。

请注意,LINE:标记允许我们直接跳转到下一个输入记录,无论您输入多少层循环。使用下一行。

$Perl

-n-e ' nextline除非/pattern/;打印$_ '

当然,你也可以这样写:

$Perl

-n-e ' print除非/pattern/'

在更复杂的情况下,下一行可以使您的代码更容易理解。

如果你想在循环前后做一些事情,你可以使用BEGIN或者ENDblock。下面一行代码可以计算文本文件中的字数。

$Perl

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

每行中所有匹配的单词都放入数组@w中,然后@w的元素数增加到$ t。ENDblock中print***输出文件中的总单词数。

还有另外两个参数可以使这个程序更容易。-a打开自动分割模式。空格是默认的分隔号。输入按照分隔号进行分隔,然后放入默认数组@ f,因此,我们可以将上面的程序改写如下

$Perl

-

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

$Perl
-F'\W'-ane'END{print$x}$x+=@F'file.txt
下面通过Unixpassword文件来介绍一个复杂的例子。Unixpassword是文本文件,每一行是一个用户记录,由冒号:分离。第?行是用户的登录shell路径。我们可以得出每一个不同shell路径被多少个用户使用:

$Perl
-F':'-ane'$s{$F[6]}++;'\
>-e'END{print"$_:$s{$_}"forkeys%s}'/etc/passwd
虽然现在不是一行,但是你可以看出使用参数可以解决什么问题。

Perl命令行程序之数据分隔符

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

$/和$\可与-n-p一起使用。在命令行上相对应为-0(零)和-l(这是L)。-0后面可以跟一个16进制或8进制数值,这个值用来赋给$/。-00打开段落模式,-0777打开slurp模式(即可以一次把整个文件读入),这与把$/设为空字符和undef一样效果。

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

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

$Perl

-le'print"HelloWorld"'

Perl命令行程序之原位编辑

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

$Perl

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

上面的程序可以通过-i参数做的更简单些。-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/84212.html

(0)

相关推荐

  • mysql中如何将日期转为时间戳

    技术mysql中如何将日期转为时间戳本篇内容主要讲解“mysql中如何将日期转为时间戳”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中如何将日期转为时间戳”吧!

    攻略 2021年12月2日
  • php如何强行转数组

    技术php如何强行转数组这篇文章主要介绍php如何强行转数组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! php强行转数组的方法:1、新建一个php文件,并将一个字符

    攻略 2021年11月30日
  • 怎么使用jQuery选择器

    技术怎么使用jQuery选择器本篇内容介绍了“怎么使用jQuery选择器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先

    攻略 2021年11月18日
  • 2021年1月-第02阶段-前端基础-HTML+CSS进阶-VS Code 软件

    技术2021年1月-第02阶段-前端基础-HTML+CSS进阶-VS Code 软件 2021年1月-第02阶段-前端基础-HTML+CSS进阶-VS Code 软件Visual Studio Code

    礼包 2021年10月19日
  • IdentityServer4迁移至3.x版本的注意问题有哪些

    技术IdentityServer4迁移至3.x版本的注意问题有哪些IdentityServer4迁移至3.x版本的注意问题有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的

    攻略 2021年11月23日
  • oraclehashjoin怎么使用(oracle创建hash索引语句)

    技术Oracle数据库中hash join和nested loop怎么用这篇文章主要为大家展示了“Oracle数据库中hash join和nested loop怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,

    攻略 2021年12月13日