人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perlプログラムで教えてもらいたいのですが、複数ある中から選択した1つの値を変数として取得してそれを投げるソースを考えているのですがどうしてもうまくいきません。どうしたらいいでしょうか・・・以下は見様見真似で作った失敗作ソースです。foreach (@users) {($A,$B,$C,$D,$E,$F,$G,$H) = split /<p>/;$ii++;if($ii eq 1){ print ”</table><form><select>¥n”; $select_flag = 1; }print ”<option>$A¥n”;@select = ();$select[$A] = ”selected”;}print ”</select></form>¥n”;$AA = $form{’$select[$A]’};print <<”_EOF_”;<form action=$cgifile method=$method><input type=hidden name=login value=1><input type=hidden name=kanri_mode value=1><input type=hidden name=$AA size=15><input type=submit name=login value=”Enter”></form>_EOF_

●質問者: kinka
●カテゴリ:コンピュータ
✍キーワード:AA EQ Perl print SELECT
○ 状態 :終了
└ 回答数 : 11/11件

▽最新の回答へ

1 ● ohmix1
●0ポイント

http://home.interlink.or.jp/~kamitani/perl_lng/cgiperl.html

プログラムの意図が良く分からないのですが、Perlプログラムというよりは、まずCGIについてもう少し理解されてから再度質問されてはいかがでしょうか?

◎質問者からの返答

失礼、では質問を変えます。

大量のデータファイル(@user)をブルダウンメニューにして選択肢の中から値を1つ選んでその選んだ値を取得して、(例えば$Aを)投げるプログラムを私が書いたソースに近い感じで書いてもらえないでしょうか?


2 ● aki73ix
●0ポイント

http://tohoho.wakusei.ne.jp/wwwperl.htm

ソース、後でよく見せてもらいますが

とりあえず気づいた点としては

’や”や¥が全角になってますね(汗)

◎質問者からの返答

半角で書いたつもりなんですけど・・・もう一度書いておきます。

ここではブルダウンで選択した$Aを$AAに代入して投げてます。

foreach (@users) {

($A,$B,$C,$D,$E,$F,$G,$H) = split /

/;

$ii++;

if($ii eq 1){print ”</table>

¥n”;

$AA = $form{’$select[$A]’};

print <<”_EOF_”;

_EOF_


3 ● aki73ix
●0ポイント

http://hp.vector.co.jp/authors/VA015636

魔導師の跡地

多分これでOKです

サンプルメソッド

method=POST&cgifile=test%2ecgi&users=TEST&users=ASAD&users=asasa

ソース部

#!/usr/local/bin/perl

$mthd=$ENV{’REQUEST_METHOD’};

local($qu,@in,$key,$val);

if($mthd eq ’GET’){

$qu=$ENV{’QUERY_STRING’};

}

elsif($mthd eq ’POST’){

read(STDIN,$qu,$ENV{’CONTENT_LENGTH’});

}

*query = decode();

print qq(Content-type: text/html¥n¥n);

print ”</table><form><select>¥n”;

$ii=0;

foreach $A (@usr){

$ii++;

# ($A,$B,$C,$D,$E,$F,$G,$H) = split /<p>/;

print ”<option>$A¥n”;

if($ii eq 1){

$AA=$A;

}

# @select = ();

# $select[$A] = ”selected”;

}

print ”</select></form>¥n”;

# $AA = $form{’$select[$A]’};

print <<”_EOF_”;

<form action=$query{’cgifile’} method=$query{’method’}>

<input type=hidden name=login value=1>

<input type=hidden name=kanri_mode value=1>

<input type=hidden name=$AA size=15>

<input type=submit name=login value=”Enter”>

</form>

_EOF_

exit;

sub decode

{

$enc=0;

#変数queryを & で分離して配列変数queryに代入

local(@query)=split(/&/,$qu);

#配列変数の数だけ解析を行う。

foreach(@query){

# ”+” を ” ”に置換する。

tr/+/ /;

# ”=” で キーと値に分離する。

($key,$val)=split(/=/);

# %nn(16進数)形式を考慮してキーと値を復元する。

$key=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack(”c”,hex($1))/ge;

$val=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack(”c”,hex($1))/ge;

# 改行コードを修正する。

$val=~s/¥r¥n/¥n/g;

# ハッシュ変数vinに最終的な値を入れる。

$vin{$key}=$val;

if($key eq ’users’){

$usr[$enc++]=$val;

}

}

return *vin;

}

◎質問者からの返答

難しすぎてわからない(泣

私でも使える処理があると助かるんですけど・・・

print <<”_EOF_”;

_EOF_

実際私はこの辺の処理が全く理解できてません


4 ● sasada
●70ポイント

http://www.hatena.ne.jp/list

人力検索はてな - 質問一覧

URLはダミーです。

質問の意味はわかりましたが、プログラムの意味はわかりませんでした・・・。

Perlの初心者というわけでもないのですけど。

意味がわからない箇所としては、

(1) foreachループの中で毎回「@select = ();」と「$select[$A] = ”selected”;」をしている意味

(2) ループの後で出てくる「$form{’$select[$A]’}」の $formってなに?

(3) 上記(2)で、なぜ引数をシングルコーテーション「’」でくくるのか? 変数を展開したくないの?

という点です。

あと、「if($ii eq 1)」という条件文ですが、eqは文字列比較の演算子です。

数値として比較したいなら == では?

というか、この条件文全体をforeachの前に持ってきても良いのでは?

if (@users > 0) で判断できるでしょうし。

できれば、各変数の意味を書いておいたほうが、適切な回答を期待できると思います。

◎質問者からの返答

私が作ったプログラムではないので私には説明はむりです。

このソースは一部抜粋して貼り付けしているので全体からすれば、ちゃんとした処理になってます。


5 ● will0
●0ポイント

http://cgi.room.ne.jp/~begin/

Learning CGI

やはりCGIとPERLについてかなりの誤解をされているように見えます

HTMLのフォームからプルダウンで選択されたものを受け取った場合

decode部分の仕様にもよりますが

$FORM{’sentaku’}といった変数にいったん入れる形が

多いと思います

<選択をして送信するHTML>

<受け取って処理するPERL>

<処理したPERLが表示するHTML>

こういう流れになるため

print <<”_EOF_”;

<form action=$cgifile method=$method>

<input type=hidden name=login value=1>

<input type=hidden name=kanri_mode value=1>

<input type=hidden name=$FORM{’sentaku’} size=15>

<input type=submit name=login value=”Enter”></form>

_EOF_

で終わりです

この答えが的外れな場合はポイントは要りません

http://www.kent-web.com/

:: KENT WEB - CGIスクリプト ::

また、KENTさんなどで簡単なCGIを読んでみるといいかもしれません

正しいかどうかはおいておいて

読みやすく理解しやすいと思います

◎質問者からの返答

たぶんおおまかにはそれで合ってるはずなんですが・・・取得して投げるのがなかなかうまくいきません。

これが問題の稼動しているCGIです。コピペしてください。

http://k1ring.hp.infoseek.co.jp/cgi-bin/raira/gekipawa.cgi?k...

ここにメールいただければ問題のCGIごと送ります。kinkaiya0@hotmail.com

問題が解決すれば全ポイント差し上げたいと思います。


1-5件表示/11件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ