Perl标志-pe,-pi,-p,-w,-d,-i,-t?

| 我已经看到了许多运行带有不同标志的Perl代码或脚本的方法。但是,当我尝试用Google搜索每个标志的含义时,我主要是在通用Perl网站上获得结果,并且在那里找不到有关标志或它们的用法的特定信息。 以下是我最常遇到的标志,我不知道它们的含义: 佩尔 perl -pi perl -p perl -w Perl的 perl -i 佩尔 如果您能告诉我这些含义以及它们的用例,或者至少告诉我一种了解其含义的方法,我将不胜感激。     
已邀请:
        是的,众所周知,Google很难查找标点符号,但不幸的是,Perl似乎主要由标点符号组成:-) 命令行开关在perlrun中都有详细说明。 (可通过在命令行中调用
perldoc perlrun
获得) 简要地一步一步地进入选项: -p:在您的命令周围放置一个打印循环,以使其作用于每个命令     标准输入行。主要用于Perl可以击败     在功能和简单性方面降低了awk的速度:-) -n:在命令周围放置一个非打印循环。 -e:允许您将程序作为参数提供,而不是     比在文件中。您不想创建脚本     每个Perl单线文件。 -i:就地修改您的输入文件(对     原版的)。无需{     删除原始,重命名}过程。 -w:激活一些警告。任何优秀的Perl编码器都将使用此代码。 -d:在Perl调试器下运行。为了调试您的Perl代码,     明显。 -t:将某些“污染”(可疑)代码视为警告(正确     异味模式将在此可疑代码上出错)。用来牛肉     增强Perl安全性,尤其是在运行其他代码时     用户,例如setuid脚本或网络内容。     
        
-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调试器     
        其他人提到了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
但是请记住,使用2参数打开,因此没有以ѭ14开头或以ѭ15开头/结尾的文件名。     
        还有一个重要标志
-n
,在列表中未提及。
-n
-p
的作用相同,只是默认情况下不打印
$_
。这在筛选文本文件时非常有用。 这样,Perl可以在一个单缸纸中代替20英镑。 例如:
perl -ne \'print \"$1\\n\" if /Messages read: (\\d+)/\' <my_input.txt
将打印出\“ Messages read:\”之后找到的每个整数值,仅此而已。     

要回复问题请先登录注册