如何解析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)

相关推荐

  • 帮助你处理Web页面层布局的jQuery插件有哪些

    技术帮助你处理Web页面层布局的jQuery插件有哪些本篇文章给大家分享的是有关帮助你处理Web页面层布局的jQuery插件有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟

    攻略 2021年11月16日
  • 华为手机什么型号好,现在买华为的哪个手机好

    技术华为手机什么型号好,现在买华为的哪个手机好别买HUAWEI容易撞机 会议全是华为 如果你硬要买的话 我推荐 华为p10华为p10屏幕尺寸5.1刚刚适合 用习惯i

    生活 2021年10月28日
  • 仿照Bootstrap的input如何修改upload上传图片的样式

    技术仿照Bootstrap的input如何修改upload上传图片的样式这篇文章将为大家详细讲解有关仿照Bootstrap的input如何修改upload上传图片的样式,小编觉得挺实用的,因此分享给大家做个参考,希望大家

    攻略 2021年11月19日
  • 树莓派中如何使用Nestcloud

    技术树莓派中如何使用Nestcloud小编给大家分享一下树莓派中如何使用Nestcloud,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!必要的准备工作想要方便的使用 Nextcloud,需要一些必要的准

    攻略 2021年11月20日
  • MySQL是如何保证数据不丢的

    技术MySQL是如何保证数据不丢的本篇内容主要讲解“MySQL是如何保证数据不丢的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL是如何保证数据不丢的”吧!

    攻略 2021年12月8日
  • ps颜色模式,ps中怎么转换色彩模式

    技术ps颜色模式,ps中怎么转换色彩模式工具/原料电脑Adobe Photoshop CS6(64 Bit)方法/步骤1、首先打开PS,见下图展示ps颜色模式。2、打开PS后,点击菜单栏的文件,打开一张图片,见下图展示。

    生活 2021年10月23日