Perl の Getopt::Long モジュールを使用して、ユーザーのコマンドライン引数を受け取ります。
Linux ではプログラムに引数を追加する必要があることが多いので、引数を制御するために Perl のモジュール Getopt::Long を見ておくと、@ARGV の配列を直接使うよりずっと強力です。Linuxでは引数には2つの形式があることはご存知だと思います。
-ヘルプ
-短い引数 -h
つまり、-と-の違いです。-はフルパラメータ。- は簡略化された引数の場合です。どちらもPerlのこのモジュールでもサポートされています。
Getopt モジュールは、Getopt::Long と Getopt::Std という 2 つのモジュールがあります。
Getopt::Long モジュール
Perl のコマンドラインで受け付けられる引数を初期化し、コマンドライン引数の解析を簡略化します。以下はプログラムの例です。
#! /usr/bin/perl
use strict;
use Getopt::Long;
use Smart::Comments;
my @libs = ();
my %flags = ();
my ( $verbose, $all, $more, $diam, $debug, $test, $step);
GetOptions(
'verbose+' => \$verbose,
'more!' => \$more,
'debug:i' => \$debug,
'lib=s' => \@libs,
'flag=s' => \%flags,
'test|t' => \$test,
'all|everything|universe' => $all,
);
### $verbose
### $more
### $debug
### $test
### @libs;
### %flags
この方法が使われています、以下は詳しい説明です、部分の前の=>のGetOptionsに注意してください。以下は詳細な説明です。
-'verbose+' オプションの + は変数を取らないので、内容を続ける必要はありません。ただ使うだけで、登場するたびに変数が追加され、つまり、引数で行について語るときに-verbose -verboseが2回登場するとverboseの値が2になる。
-'more!' with !オプションは変数を取らず(つまり、-more引数を付けなくても使える)、コマンドラインに現れるたびにデフォルトで1になり、機能のオンとオフを設定するために使われます>. パラメータにnoを付けると、-nomoreのように負の値になります。
-'flag=s' は文字列を = で受け取り、文字列 (s)、整数 (i)、または浮動小数点 (f) 変数を必要とします。
-'debug:i' を : オプションで指定すると、デフォルトが 0 のオプション変数か、空の文字列を受け取ります。
-'test|t' の後に | が続くと、-test を -t と省略できることを意味します。
-'lib=s' => @libs この場合の @libs のように、関連する変数が配列である場合、オプションは複数回出現し、値を配列にプッシュすることが可能です。
-'flag=s' => %flags 関連する変数がハッシュの場合、キー=値のペアが必要で、ハッシュに挿入されます。
備考
パラメータ名を照合する場合、GetOptions はデフォルトで大文字と小文字を無視し、デフォルトのパラメータは固有の最短文字列(最初の文字)に短縮されます(例えば、-more は -m です。同じ最初の文字が2番目の文字として追加され、区別される)
Getoptモジュールのプログラムでは、以下のメソッドを使用します。
上記の例に従って、test.plというプログラムを書くとしよう。あとは、コマンドラインに以下のパラメータを追加するだけです。
ちょっと長いですが、上記を見ていただければ、イメージはつかめると思います。今回はSmart::Commentモジュールを使っているので、一番下の###は変数の内容そのものを出力しています。これも超強力なモジュールです。では、これらのパラメータを見てみましょう。これらのパラメータを入力したときに何が出力されるかを見てみましょう。
### $verbose: 3
### $more: 1
### $debug: 2
### @libs: [
### '/lib',
### '/lib64'
### ]
### %flags: {
### a => '1',
### b => '2'
### }
上で入力したパラメータを確認して、イメージをつかんでください。
Getoptモジュールの簡単な概要
(1)プログラム内部に有効なパラメータが渡される
パラメータタイプ: 整数、浮動小数点、文字列
GetOptions(
'tag=s' => \$tag
);
'=' はパラメータに値が必要なことを意味し、':' に置き換えた場合はパラメータに値が必要ないことを意味します。
s' は文字列の引数を渡すこと、'i' は整数の引数を渡すこと、'f' は浮動小数点の引数を渡すことを意味します。
値を持つパラメータに使用されるメソッド
$ test.pl --tag=string
$ test.pl --tag string
(2) 複数の値をプログラムへ転送する必要があるパラメータ。
例えば、@libfilesに複数の値を渡す必要があるアクションメソッド。
GetOptions ("library=s" => \@libfiles);
GetOptions ("library=s@" => \$libfiles);
タグに渡されるパラメータ
使用メソッド
(3) キー・バリュー・ペアのパラメータ渡し
時には、いくつかのキーと値のペアをプログラムに渡して処理する必要があるため、この機能を使用する必要があります。
GetOptions ("define=s" => \%defines);
GetOptions ("define=s%" => \$defines);
使用メソッド
(4) パラメータのエイリアス
省略形など、パラメーターの別名が必要な場合は、次のようにします。
最初の名前はプライマリ名、他の名前はエイリアス(複数のエイリアス名を持つことができる)、ハッシュパラメータを使用する場合は、プライマリ名がキー値として使用されます。
関連
-
指定したフォルダーにあるリンク切れファイルのシンボリックリンクを自動的に削除するスクリプト
-
Net coreのホットプラグ機構とアンインストールに関する問題点ヘルプガイド
-
ASPは、コンテンツ内のすべての画像パスSRCを正規表現で抽出するためのコードです。
-
オンライン圧縮・解凍のためのASPコード
-
現在のフルパス(url)を取得するためのasp関数コード
-
ASPでフォルダーの存在を検出し、存在しない場合は自動的に作成する方法
-
Perlによるディレクトリの探索とLinuxコマンドによるログの解析 コード例共有
-
Perlのファイルハンドルの説明
-
コンストラクタでのPerlメソッド使用法入門
-
Perl 構文による Perl 演算子の使用法ガイド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JSONデータを扱うASP実装コード
-
aspとphpの時限式ページ生成のためのアイデアとコード
-
数字を漢数字(大文字の金額)に変換するASP機能
-
ASPとPHPのファイル操作速度の比較
-
SELECT ドロップダウンメニューで VALUE と TEXT 値を同時に取得する ASP コード
-
perl use vars pragma 使用のヒント
-
スペースがセパレータである場合の perl qw 問題の解決法
-
perl による生物学的突然変異のランダムシミュレーションコード
-
perl変数$/の使用方法について説明します。コンテキストが行モードのとき、$/は行を区別するものを定義します。
-
perlの尖ったブラケット演算子(<>)について