2010-12-10 20 views
-3

コマンドライン入力でPerlファイルを実行すると、テーブルのフィールドが更新されます。例えば、それは、次いでtがこれを実装することのPerl script.HowのDBにのみアドレスフィールドを更新する必要があり、入力パラメータ--address_onlyを受信した場合単純なコマンドラインオプションをPerlでどのように解析しますか?

perl function_impl.pl --address_only 

について

+3

何あなたはこれまでに試してみましたか?どの部分がお困りですか?コマンドラインオプション? DBの更新? – DVK

+1

また、更新値をどのように提供しますか? – DVK

+2

また、2つの質問があなたのために答えると、あなたは1つの答えをアップヴォートしたり受け入れたりしませんでした。それを維持して、人々はあなたの質問に非常に熱心に答えません。 – DVK

答えて

-4

スクリプトは、あなたが行うことができ、ゼロまたは1つの引数受け入れる場合:

if($#ARGV == 0) {  # one argument passed 
     if($ARGV[0] eq '--address_only') { 
       # --address_only passed 
     } else { 
       # something else passed 
     } 
}elsif($#ARGV == -1) { # no argument passed 

}else{     # more than one arg passed 

} 
+2

'@ ARGV'手動解析はスケーラブルではありません。オプション解析(Getopt :: StdまたはGetopt :: Long)の代わりにCPANモジュールを使用してスケーラビリティを提供してください(可読性は気にしないでください)。 – Aye

+1

本当に引数の数が必要なときに '$#ARGV'をチェックするのはなぜですか?これは '@ ARGV'で利用可能で、off-by-oneの問題はありません。 – Ether

11

Getopt::Longをコマンドラインパラメータを解析するためのPerlで非常に一般的な、非常に簡単な方法です。

my %args =(); 
GetOptions (\%args, 'address_only');  # will store true value in $args{address_only} 

if ($args{address_only}) { 
    # Update address 
} 

必要に応じてその部分の支援を提供できるように、テーブルの更新に使用するコードをお知らせください。

また、更新値をどのように指定しますか?あなたの例では、コマンドラインからは提供しないので、ハードコードされていると思いますか?コマンドラインで供給したい場合は、パラメータの値を受け入れるために上記のコードを変更します。簡単な例として、

my %args =(); 
GetOptions (\%args, 'address_only=s'); # will store address value in $args{address_only} 
# Usage: function_impl.pl --address_only [email protected] 

を、あなたは、「SET」を構築することができUPDATE文の一部:

関連する問題