-1
當我想在許多文件中替換一個常見單詞時,我使用unix中命令行中的perl。 我想知道什麼是-pi和-e在運行時會發生什麼,如果我不放那些,會發生什麼情況。當在perl中執行命令時,-pi和-e是什麼
實施例:perl -pi -e 's/design/dezine/g' *
當我想在許多文件中替換一個常見單詞時,我使用unix中命令行中的perl。 我想知道什麼是-pi和-e在運行時會發生什麼,如果我不放那些,會發生什麼情況。當在perl中執行命令時,-pi和-e是什麼
實施例:perl -pi -e 's/design/dezine/g' *
這全部在perlrun記載(從perldoc perlrun
和man perlrun
獲得)。
-e
治療參數(如果有的話)或下一個參數(否則)作爲Perl代碼執行的其餘部分。代替腳本名稱。
$ perl -e'print "abc\n";'
abc
-n
執行用於的ARGV
每行的腳本(或-e
代碼)。該行將出現在$_
。
$ 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
'perl的-h'。 '-i'進行現場替換 –
但是不要將'-p','-i'和'-e'堆棧爲'-pie',因爲'-i'接受一個參數並將'e'作爲參數。 –
這是我很久以前稱之爲[Perl命令行的實地指南](https://speakerdeck.com/petdance/a-field-guide-to-the-perl-command-line)的演示文稿,它有一個快速總結一些例子。 –