6
#!/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を初めて使用するため、これが機能しない理由を特定できませんでした。

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

4

2 に答える 2

11

私は-sあなたがあなたのshe-bangラインに含めるコマンドラインオプションがあなたを噛んでいると信じています。perlrunのドキュメントによると、-sコマンドラインオプションは次のとおりです。

プログラム名の後、ファイル名引数の前(または-の引数の前)のコマンドライン上のスイッチの基本的なスイッチ解析を有効にします。

そのオプションを削除すると、期待どおりに機能するはずです。-wまた、すでにディレクティブを使用しているため、削除することをお勧めしますuse warningsuse warningsディレクティブははるかに完全な機能を備えており、基本的に-wオプションを置き換えます)。

だから、長い話を短くして、あなたの最初の行を作ってください:

#!/usr/bin/perl
于 2012-08-22T16:23:59.477 に答える
0

Windowsでcmdを使用してスクリプトを実行する場合はperl、スクリプト名の前に指定する必要があります。そうしないと、GetOptionsが機能しません。

最初にスクリプトを実行せずにコマンドラインでscript.plを呼び出しようとしたところperl、すべてのオプションが解析されませんでした。

于 2018-11-01T08:26:13.550 に答える