Perl の $#ARGV について
[上に]
[前に]
[次に]
うほほ
1997/11/06(木) 21:45:23
Perl の $#ARGV は、本当に引数の数が入るのでしょうか?
なんどやっても-1 しかはいりません。なにかサーバーの
設定がわるいのでしょうか?どなたか同じような現象がで
たかたがいたら教えてください。
miyasiro
[E-Mail]
1997/11/08(土) 01:22:54
$#ARGV は、引数の数 - 1 の値となります。
だから、引数がない場合は、-1 で正しい値です。
#$配列名は、最後の要素の添え字を表すものであり、
最初の引数は、C と異なり、perl では $ARGV[0] に格納される
ために、このようなことになります。
miyasiro
[E-Mail]
1997/11/08(土) 02:04:57
ここの「perl入門(概要編)」を見たら、上のような説明が
ちゃんとされていますね。
CGI で perl に引数を与える方法を知らないので、引数は
常になしだと思ってたのですが、何らかの方法で引数を与えて
いるのでしょうか? それとも、telnet とかで perl を起動する
ときの話でしょうか?
だとすると、上の RES は、おおハズレです(苦笑)。
とほほ
1997/11/09(日) 23:15:14
CGIを呼び出す際に
<FORM METHOD=POST ACTION="cgi-bin/xx.cgi?arg1+arg2">
のように呼び出せば、$#ARGV が 1 になって、$ARGV[0] に
arg1 が、$ARGV[1] に arg2 が設定されると思います。
miyasiro
1997/11/10(月) 21:38:32
? 以降が POST の場合に引数にセットされるとは全く
知りませんでした。ご教授ありがとうございます。
試しにうちの HP のサーバで試してみたところ、QUERY_STRING
と引数の双方にセットされるようです。
$ENV{'SERVER_SOFTWARE'} = Netscape-Enterprise/2.01
$ENV{'REQUEST_METHOD'} = POST
$ENV{'QUERY_STRING'} = arg1+arg2
-------------------------------------------
$#ARGV = 1
$ARGV[0] = arg1
$ARGV[1] = arg2
ただ、perl が $#ARGV をセットしないというのは考え難い
と思うので、サーバの問題のような気もしますが…
miyasiro
1997/11/12(水) 22:35:54
すいません。WebMaster の「とほほ」さんの書き込みを、質問者の
「うほほ」さんによるものと勘違いしてました。申し訳ありません。
それから、ここの「CGI/SSI入門」をちゃんと読みました(苦笑)。
これによると、環境変数 QUERY_STRING へのセットよりも、引数への
セットの方が原則であるような印象を受けますね。こういう仕様は、
まったく知りませんでした。
[上に]
[前に]
[次に]