2012-08-22 6 views
5
#!/usr/bin/perl -sw 
use strict; 
use warnings; 
use Getopt::Long; 

my $remote = 0; 
my $test = 0; 
GetOptions ('remote' => \$remote, 'test' => \$test); 
print "$remote:$test\n"; 

のperl test.pl --remote --testコマンドラインオプション長い

上記プリント解析できません "0:0"。私はPerlを初めて使っているので、なぜこれが動作していないのか判断できませんでした。

また、「Simple Options」セクションをhttp://perldoc.perl.org/Getopt/Long.html#Simple-optionsから実行しましたが、それも何も生成されませんでした。

+0

を - 私はそれらを持っていた、ちょうどこの記事に含まれていませんでした。 –

答えて

11

あなたのshe-bang行に含めるコマンドラインオプションの-sがあなたを噛んでいると思います。 perlrun documentationによると、-sコマンドラインオプション:

は、プログラム名の後に、コマンドライン上のスイッチのための解析の初歩的なスイッチを可能にしますが、任意のファイル名の引数の前に(またはの引数の前に - )。

このオプションを削除すると、期待どおりに動作するはずです。すでにuse warningsという指示文を使用しているので、-wを削除することをお勧めします(use warnings指示文は完全に機能し、実質的に-wオプションを置き換えています)。

だから、長い話を短く、あなたの最初の行にする:raina77ow @

#!/usr/bin/perl 
+0

ありがとう、私は短いコマンドのためにこれを以前使用していましたが、それらを置き換えたいと思っていました(とにかく完全な言葉を使っていたので)。 –

関連する問題