你应该知道的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
- 点赞
- 收藏
- 关注作者
评论(0)