WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Perl の $ARGV について

0:[投稿] ボヘミアン [2002/03/11 15:28 ][環境:MAC+IE WIN系+Perl]

ボヘミアンと申します。

只今MacJPerlを使ってPerlの勉強中ですが、$ARGVがうまく使えず、勉強につまっています。

「すぐわかるPerl」 深沢千尋氏 著
という本で勉強中です。その本の中で、
「へロンの公式」を使って3角形の面積を求める例題が
あり、そこで$ARGVが使用されています。

# heron -- へロンの公式で三角形の面積を求める
($a, $b, $c) = @ARGV;
$S = ($a + $b + $c)/2;
$size = sqrt($s * ($s - $a) * ($s- $b) * ($S - $c));
print "$size\n";

これの $a, $b, $c を引数で渡して計算できるように
したいのですが、その方法が分かりません。
本では、UNIXコマンドラインで
% heron 3 4 5
6
として、面積を割り出していましたが、うまくいきませんでした。
どなたかこの方法がお分かりの方、ご教授ください。


1:[回答] TOM neko [2002/03/11 15:53 ]

MacPerlだとコマンドラインで呼び出しってできないですよね。
それから、CGIとしては$ENV{QUERY_STRING}からしか引数は受け取れないです。@ARGVに値が入りません。

参考(宣伝):
http://homepage1.nifty.com/glass/tom_neko/web/web_06.html


2:[完了] エンドレス [2002/03/12 09:01 ]

え、そうだったんですか!

TOM neko さんのサイトは面白い内容ですね。
MacのローカルでCGIを動かせるなんて、知らなかった。。
$ENV{QUERY_STRING}含めて、そちらのサイトを色々
参考にさせて頂きます。ありがとうございました。


3:[完了] B-Cus [2002/03/12 22:02 ]

> それから、CGIとしては$ENV{QUERY_STRING}からしか引数は受け取れないです。
> @ARGVに値が入りません。

foo.cgi?arg1+arg2 という呼び出し方をすれば @ARGV に入ります。


4:[完了] TOM neko [2002/03/12 23:18 ]

>>3
MacPerlの話ですよ。


5:[完了] B-Cus [2002/03/13 00:34 ]

> MacPerlの話ですよ。

なるほど。

Mac の事は全く知らないのですが、MacPerl には @ARGV という
概念がないのですか? でなくて Mac には引数という概念がない?
それとも (Mac OS X 以前は) CUI という概念すらなかったり
しますか?


6:[完了] B-Cus [2002/03/13 00:43 ]

web で検索してみると MacPerl でも @ARGV は使えるようですね。

ならば、それは単に web サーバ (この例では「web 共有機能」と言うの
ですか?) の制限ではないかと思ってしまうのですが、違うのでしょうか?


7:[完了] TOM neko [2002/03/13 10:37 ]

>>5
>>6
言葉足らずですみません。MacPerlを使ったCGIでは、呼び出すURLの引数が@ARGVに入らないのです。

Mac標準の「Web共有」だけでなく、MSのPWSのMac版でも試しましたが、どちらも駄目でした。MacPerlの場合、CGIとして使うときのスクリプトファイルの形式や、MacPerlの呼び出し方も違うので、CGI以外で使えるからってサーバの問題とは言い切れないんですよ。なので、いまのところMacPerlの問題かサーバ側の問題か不明です。

AppleScript等、他のスクリプトを使ったCGIで実験してみればいいかもしれませんね。

OS X前のMacにはCUIの概念はないです。最初からGUIのシステムとして設計されましたから。


8:[完了] B-Cus [2002/03/14 01:40 ]

なるほど。Mac ならではの深い理由があったりするのかもしれませんね。

ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World