你应该知道的Perl 命令行参数与示例

举报
Tiamo_T 发表于 2022/02/18 16:07:39 2022/02/18
【摘要】 Perl 中的命令行选项可能有助于有效地完成较小的任务。

Perl 中的命令行选项可能有助于有效地完成较小的任务。

在本文中,让我们了解一下如何使用 Perl 命令行选项来执行以下任务:

  • 编辑文件内容
  • 处理线分隔符
  • 检查语法错误
  • 加载模块
  • 执行循环
  • 执行 perl 代码
  • 设置输入行分隔符
  • 拆分输入行
  • 等等。,


1. Perl -i 选项:编辑文件内容

它一个一个地打开文件并用 STDOUT 替换内容。

让我们使用下面的 sample.txt 文件将其内容转换为大写,如下所示。

$ cat sample.txt
Practical Extraction Report Language

$ perl -pi  -e “tr/[a-z]/[A-Z]/” sample.txt

$ cat sample.txt
PRACTICAL EXTRACTION REPORT LANGUAGE

您也可以备份原始文件,如下所示:

$ perl -pi.bak  -e “tr/[a-z]/[A-Z]/” sample.txt

$ cat sample.txt
PRACTICAL EXTRACTION REPORT LANGUAGE

$ cat sample.txt.bak
Practical Extraction Report Language

要调试 Perl 程序,请使用我们前面解释的Perl 调试器。


2. Perl -l 选项:行分隔符处理

行分隔符将八进制值作为参数。以下是一些常见分隔符的几个示例,它是八进制值。

Character    Octal Value
=========    =========
new line(\n) 012
tab(\t)      011
space        040
&            046

注意:使用“man ascii”命令可以知道所有字符的八进制值。

行分隔符的示例用法:

$ perl -p -l046 -e “tr/[a-z]/[A-Z]/”;
bala

Output :

BALA&


3. Perl -c 选项:检查语法错误

选项 -c 编译您的程序而不运行它,以确保您的程序中不存在语法错误。

$ perl -c sample.pl

4. Perl -M 选项:用于加载模块

使用 Perl -M 选项,我们可以加载所需的模块,如下所示。

$ perl -MFile::Copy -e 'move(“sample.txt”,”/tmp”);'

-m 选项也加载模块,但它不导入任何东西。以下是区别:

  • -MFile::Copy 等于“使用 File::Copy; “
  • -mFile::Copy 等于“使用 File::Copy()”


5. Perl -n 和 -p 选项:隐式循环

选项 -n 将您的代码包装在循环中,如下所示。

while(<>) {
# perl code
}

以下片段更好地描述了这一点。

while(<>) {
$_ =~ tr/[a-z]/[A-Z]/;
}

通过使用-n,我们可以重写上面的代码片段,如下所示。

$ perl -n -e 'tr/[az]/[AZ]/;print'

选项 -p 将您的代码包装在循环中,如下所示。

while(<>) {
# perl code
print;
}

以下片段更好地描述了这一点。

while(<>) {
$_ =~ tr/[a-z]/[A-Z]/;
print;
}

通过使用-p,我们可以重写上面的代码片段,如下所示。

$ perl -p -e “tr/[az]/[AZ]/”;


6. perl -e 选项:在命令行本身执行 perl 代码

使用此选项,可以在命令行本身中编写简单或简短的 Perl 程序,如下所示。

$ perl -e “print \”Username : $ENV{USER}”

7. Perl -0 选项:输入记录分隔符

使用选项 -0,我们可以将“输入记录分隔符”从换行符更改为其他内容,如下所示。

$ perl -p -0046 -e “tr/[a-z]/[A-Z]/”;
bala
raja&

Output :

BALA
RAJA&

在上面的例子中,046 是 '&' 字符的八进制值。因此,在接收到 & 字符后,Perl 将其视为记录的结尾,然后进行翻译操作。

8. perl -a 选项:分割输入行

它将 $_ 拆分为 @F,分隔符为空格。

以下示例演示了选项 -a。

$ cat emp_salary.txt
bala     10000
rajesh  12300
kumar 14000

$ perl -n -l012  -a -e ‘print “$F[1]“‘  emp_salary.txt
10000
12300
14000

默认情况下,它以空格作为分隔符并进行拆分操作。可以使用 -F 选项更改分隔符,如下所示。

$ cat emp_salary.txt
bala:10000
rajesh:12300
kumar:14000

$ perl -n -l012  -F: -a -e ‘print “$F[1]“‘  emp_salary
10000
12300
14000
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。