当我想替换许多文件中的常用词时,我在 unix 的命令行中使用 perl。我想知道运行它时 -pi 和 -e 是什么,如果我不放它们会发生什么。
例子:perl -pi -e 's/design/dezine/g' *
当我想替换许多文件中的常用词时,我在 unix 的命令行中使用 perl。我想知道运行它时 -pi 和 -e 是什么,如果我不放它们会发生什么。
例子:perl -pi -e 's/design/dezine/g' *
这些都记录在perlrun中(从perldoc perlrun
和获得man perlrun
)。
-e
将参数的其余部分(如果有)或下一个参数(否则)视为要执行的 Perl 代码。代替脚本名称。
$ perl -e'print "abc\n";'
abc
-n
-e
为每一行执行脚本(或代码) ARGV
。该行将出现在$_
.
$ perl -MO=Deparse -ne'print uc($_);'
LINE: while (defined($_ = <ARGV>)) {
print uc $_;
}
-e syntax OK
$ echo abc | perl -ne'print uc($_);'
ABC
-p
就像-n
,除了它也会导致$_
在代码执行后打印。
$ perl -MO=Deparse -pe'print uc($_);'
LINE: while (defined($_ = <ARGV>)) {
print uc $_;
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
$ echo abc | perl -pe'$_ = uc($_);'
ABC
-i
代表“就地”。它将输出“重定向”回ARGV
正在读取的文件。
BEGIN { $^I = ""; }
LINE: while (defined($_ = <ARGV>)) {
print uc $_;
}
continue {
die "-p destination: $!\n" unless print $_;
}
-e syntax OK
$ echo abc >file
$ perl -i -pe'$_ = uc($_);' file
$ cat file
ABC