我见过许多使用不同标志运行Perl代码或脚本的方法。但是,当我尝试在google上搜索每个标志的含义时,我主要得到通用Perl站点的结果,在那里找不到关于标志或它们的用法的具体信息。
下面是我最常遇到的旗帜,我不知道它们是什么意思:
如果您能告诉我其中每一个的含义和它们的一些用例,或者至少告诉我一种找出它们含义的方法,我将非常感激。
发布于 2011-06-10 04:45:06
-p
标志基本上使用以下命令运行脚本
while (<>) {
# exec here
}
continue {
print or die "-p destination: $!\n";
}
-e
允许您向STDIN
传递脚本
perl -e '$x = "Hello world!\n"; print $x;'
-i
指示解释器执行脚本传递给STDIN
的所有数据都是就地完成的。
-w
与use warnings;
相同,但在全局范围内而不是在局部范围内
-d
运行Perl调试器。
发布于 2011-06-13 00:17:57
其他人也提到了perlrun。如果你使用B::Deparse,你可以它的意思(对于大多数事情):
$ perl -MO=Deparse -p -e 1
LINE: while (defined($_ = <ARGV>)) {
'???';
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
1由“?”表示,因为它已被优化。
$ perl -MO=Deparse -p -i -e 1
BEGIN { $^I = ""; }
LINE: while (defined($_ = <ARGV>)) {
'???';
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
-i设置$^I,如
$ perl -MO=Deparse -p -i.bak -e 1
BEGIN { $^I = ".bak"; }
LINE: while (defined($_ = <ARGV>)) {
'???';
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
但请记住,使用双参数open,因此文件名不能以> <
开头或以|
开头/结尾。
发布于 2016-05-23 11:54:41
还有一个重要的标志-n
,在列表中没有提到。
-n
的工作原理与-p
相同,只是默认情况下它不打印$_
。这在过滤文本文件时非常有用。
通过这种方式,Perl可以在单个一行程序中替代grep | sed
。
例如:
perl -ne 'print "$1\n" if /Messages read: (\d+)/' <my_input.txt
将打印出在"Messages read:“之后找到的每个整数值,仅此而已。
https://stackoverflow.com/questions/6302025
复制