內容

名稱

Getopt::Std - 處理單字元開關與開關群集

語法

    use Getopt::Std;

    getopts('oif:');  # -o & -i are boolean flags, -f takes an argument
		      # Sets $opt_* as a side effect.
    getopts('oif:', \%opts);  # options as above. Values in %opts
    getopt('oDI');    # -o, -D & -I take arg.
                      # Sets $opt_* as a side effect.
    getopt('oDI', \%opts);    # -o, -D & -I take arg.  Values in %opts

說明

getopts() 函數處理單字元開關與開關群集。傳遞一個引數,其中包含要辨識的所有開關字串。對於找到的每個開關,如果需要引數且已提供,getopts() 會將 $opt_x (其中 x 是開關名稱) 設定為引數值。如果需要引數但未提供,$opt_x 會設定為未定義值。如果開關不需要引數,$opt_x 會設定為 1

需要引數的開關不論開關與引數之間是否有空格。如果在命令列中找到未指定的開關,系統會警告使用者已提供不明選項。

getopts() 函數會傳回 true,除非找到無效選項。

getopt() 函數類似,但其引數是包含所有需要引數開關的字串。如果未提供開關的引數,例如 y,對應的 $opt_y 會設定為未定義值。系統會靜默接受未指定的開關。不建議使用 getopt()

請注意,如果您的程式碼在建議的 use strict vars pragma 下執行,您需要使用 our 宣告這些套件變數

our($opt_x, $opt_y);

對於不喜歡建立額外全域變數的人,getopt()getopts() 也會接受雜湊參考作為第二個選用引數。雜湊鍵會是 x (其中 x 是開關名稱),鍵值會是引數值或未指定引數時的 1

為了讓程式處理看起來像開關,但實際上並非開關的參數,兩個函式在看到參數 -- 時,將會停止處理開關。-- 將從 @ARGV 中移除。

--help--version

如果 - 不是已識別的開關字母,getopts() 會支援參數 --help--version。如果已定義 main::HELP_MESSAGE() 和/或 main::VERSION_MESSAGE(),則會呼叫它們;參數為輸出檔案處理、選項處理套件名稱、其版本和開關字串。如果未定義子常式,則會嘗試產生有意義的訊息;為獲得最佳結果,請定義 $main::VERSION。

如果在指令碼中偵測到嵌入式文件 (pod 格式,請參閱 perlpod),--help 也會顯示如何存取文件。

請注意,由於過度偏執,如果 $Getopt::Std::STANDARD_HELP_VERSION 不是 true (預設為 false),則訊息會列印在 STDERR 上,且在訊息列印後,處理會繼續進行。由於這與標準相符行為相反,強烈建議將 $Getopt::Std::STANDARD_HELP_VERSION 設為 true。

可以透過設定 $Getopt::Std::OUTPUT_HELP_VERSION 來變更訊息的輸出檔案處理。可以呼叫函式 help_mess() 和 version_mess(),並將開關字串作為參數,來列印 --help (不含 使用方式: 行) 和 --version 的訊息。