問題: Windows XP がコマンド ライン引数を perl スクリプトに渡していません。
症状:次のような単純なコマンド:
say "Argument 1 (\$ARGV[0]) is: $ARGV[0], argument 2 (\$ARGV[1]) is: $ARGV[1].";
をもたらしました:
Use of uninitialized value $ARGV[0] in concatenation (.) or string at...
解決:
根本的な問題は Windows XP にあります。perl を開始するためのデフォルトの方法では、スクリプト名である最初の変数のみが渡されます。その結果、$ARGV[0] が初期化されていません。
修正するには、次の場所で Windows レジストリを編集します。
\HKEY_CLASSES_ROOT\Perl\shell\Open\command
そして、次のように入力します。
"C:\Perl\bin\perl.exe" %*
結果は次のとおりです。
C:\whatever>perl argtest.pl 1 2
Argument 1 ($ARGV[0]) is: 1, argument 2 ($ARGV[1]) is: 2.
特に、私を正しい方向に向けてくれた David W に感謝します。