命令行選項(xiàng)

2018-02-24 16:03 更新

Shebang 行

幾乎每個(gè) Perl 程序都如此開(kāi)始:

#!/usr/bin/perl

這是 UNIX 結(jié)構(gòu),它告訴 Shell 直接執(zhí)行余下的輸入程序文件。

你可以在此行添加 Perl 的任何命令行選項(xiàng),它們將成為選項(xiàng)之后命令行的一部分。 如果你有一個(gè)程序包含:

#!/usr/bin/perl -T

然后執(zhí)行:

perl -l program.pl

-l?和?-T?兩個(gè)選項(xiàng)都會(huì)使用,但?-l?將先用。在?perlrun?文檔中介紹 了 Perl 的命令行選項(xiàng)。此處只介紹最有用的內(nèi)容。

perl -T

Perl 允許你在?taint?模式執(zhí)行。在此模式中,變量在使用前需要“消毒”,以 應(yīng)對(duì)不安全的操作。

何為不安全?

  • 執(zhí)行程序
  • 寫(xiě)入文件
  • 創(chuàng)建目錄
  • 基本上,修改系統(tǒng)的任何事情

如果你沒(méi)有“去污”數(shù)據(jù),那么這些操作將是程序中的嚴(yán)重錯(cuò)誤。

如何去污?使用正則表達(dá)式匹配有效的值,然后將匹配賦給變量。

my ($ok_filename) = $filename =~ /^(\w+\.log)$/;

你應(yīng)當(dāng)達(dá)到程序?taint?安全的目的。

perl -c file.{pl,pm}

此命令行選項(xiàng)允許檢查給定文件的語(yǔ)法錯(cuò)誤。它也會(huì)執(zhí)行?BEGIN?塊中的任意 代碼,并檢查程序中已使用的模塊。

你應(yīng)當(dāng)使用?-c?在每次更改后檢查代碼的語(yǔ)法。

perl -e 'code'

該選項(xiàng)允許你從命令行執(zhí)行代碼,以代替將程序?qū)懭胛募?lái)執(zhí)行。

$ perl -e 'print "1\n"'
1

這對(duì)小程序、快速計(jì)算、以及與其他選項(xiàng)組合使用非常有用。

-n、-p、-i

Perl 的?-n?選項(xiàng)允許你針對(duì)標(biāo)準(zhǔn)輸入的每行重復(fù)執(zhí)行代碼(通常使用?-e?指定)。 這些是等效的:

$ cat /etc/passwd | perl -e 'while (<>) { if (/^(\w+):/) { print "$1\n"; } }'
root
...
$ cat /etc/passwd | perl -n -e 'if (/^(\w+):/) { print "$1\n" }'
root
...

-p?選項(xiàng)與?-n?相同,除了它在每行后打印?$_

如果你組合?-i?選項(xiàng),Perl 將就地編輯你的文件。因此,要將一堆文件從 DOS 轉(zhuǎn)換成 UNIX 換行,你可以這樣干:

$ perl -p -i -e 's/\r\n/\n/' file1 file2 file3

perl -M

Perl 的?-M?選項(xiàng)使你可以從命令行使用模塊。有好些模塊首選此方式運(yùn)行(如?_CPAN_和?Devel::Cover)。如果你需要使用?-e?包含模塊,它也是習(xí)慣的 簡(jiǎn)寫(xiě)。

$ perl -e 'use Data::Dumper; print Dumper( 1 );'
$VAR1 = 1;

$ perl -MData::Dumper -e 'print Dumper( 1 );'
$VAR1 = 1;

明白模塊是否已被安裝

試試從命令行加載模塊。-e1?只是一個(gè)立即退出的空程序。如果你獲得錯(cuò)誤, 那么該模塊未被安裝:

$ perl -MWWW::Mechanize::JavaScript -e 1
Can't locate WWW/Mechanize/JavaScript.pm in @INC...
BEGIN failed--compilation aborted.
$

返回沒(méi)有錯(cuò)誤則意味著該模塊已安裝。

$ perl -MWWW::Mechanize -e 1
$

當(dāng)它存在時(shí),檢查版本:

$ perl -MWWW::Mechanize -e'print $WWW::Mechanize::VERSION'

并非所有模塊都有?$VERSION?變量,因此這可能不總是工作。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)