• ベストアンサー

Perlの初歩

自分のホームページに入れたくてCGIの作り方を調べてみましたがなんせ一日目なんで良くわかりません。ブラウザのフォームから文章を入力してそれをファイルに書き込む方法を教えてください。できればそれぞれの命令の意味もおねがいします。

  • Perl
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • estea
  • ベストアンサー率44% (39/87)
回答No.1

いきなりすぎますよ。それは。 perl でCGIな場合ですが、、、変数の使い方とか・・・一日目ってことで どこまで理解があるのか分かりませんが・・・。一応回答しますが、分からないと してもそれは当然のこととおもわれ。 なお、動くかは確認してません(マテ #! /usr/bin/perl $in = &_getdata; print "Content-type: text/html\n\n"; print map { "$_ = $in->{$_}\n" } keys %$in; sub _getdata{ # jcode.pl を用いる場合。 require './jcode.pl'; #取得したデータを入れておくハッシュ列へのリファレンス及び、 #一時変数をmyにとる my $FORM; my($buffer,@pairs,$pair,$name,$value); # 送信データが POST か GET かで、受け取り方法を変える # 受け取ったデータは $buffer に入る if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } #URLエンコード法に従ってデコード # フォームのデータは & でくっついてるんでそれをきる @pairs = split(/&/,$buffer); foreach $pair (@pairs) { # それぞれのペアに対して、 name と value は = でつながっているのでそれを切る ($name, $value) = split(/=/, $pair); # スペースは + に変換されているのでこれを戻す $value =~ tr/+/ /; # 記号や2バイト文字などを元に戻す $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 受け取った文字コードを指定の(SJIS)に変換する &jcode'convert(*value,'sjis',"","z"); # 代入。 $FORM->{$name} = $value; } # 返す。 return $FORM; }

backflip
質問者

お礼

まともに回答してくれてありがとうございました。短いプログラムだけどいろいろおぼえなければならなそうですね。もっと簡単にできるかなと思ってたんですが。図書館で本借りてきて出直します。

その他の回答 (1)

  • estea
  • ベストアンサー率44% (39/87)
回答No.2

補足。 HTML で form action=.. で指定してちょ。 ってか・・・間違ってるやろ。いろんな意味で。 一日目とか言ってるやつが聞く内容ではない気もしつつ・・・

関連するQ&A

  • Perl/JavaScript/サブルーチン

    はじめまして。 今ちょっといじってるプログラムについてお聞きしたいことがあります。 index.htmlのtextareaからmy.cgiを呼び出したい のですが。my.cgiというのは 1.textareaに入力された文章をデータベースに保存。 2.日付順にソートし新しいものを一つだけ取り出す。 3.index.htmlに表示する というものなのですが。 デフォルトでtextareaに一番新しい情報が入るようにしたいのです。valueで指示したのですがJavaScriptが邪魔してブラウザに反映されません。ソースを見るとvalue="********"とはいっています。 my.cgiを呼び出す命令を記述したmy.jsというファイルを作ってサブルーチンのように扱うという方法も考えているのですが、呼び出しやindex.htmlに表示させる記述の仕方が分かりません。 どなたか分かる方は、どうぞ宜しくお願いいたします。

  • 「入力フォーム」に入力した情報が、指定したメルアドに送信されるようにしたい

    ホームページを作っている初心者です。 CGI について質問です。よろしくお願いいたします。 ホームページに設置した「入力フォーム」に お客様が入力した情報が、指定したメルアドに 送信されるようにしたいのですが どうすればよいのかわかりません。 現状は プロバイダにある Free CGI フォームメール をインストールしました。 その後、どうすればよいのかわかりません。 インストールした後に表示される以下の文章 の意味もわかりません。 「ホームディレクトリの /cgi_data/FormMail/ に サンプルをコピーしています。」 どうすれば ホームページに設置した「入力フォーム」に お客様が入力した情報が、指定したメルアドに 送信されるようになりますでしょうか? どなたかご存じの方いらっしゃいましたら どうかよろしくお願いいたします。

  • perl/cgiについて、教えて下さい。

    perl/cgiについて、教えて下さい。 下記のようなことを、行いたいと考えています。 とりあえず、  a.html  b.html  c.html があり、 __________________________________ 1:それぞれ、フォームに、テキストボックスが一つあります。 2:他のフォームに遷移できます。(例:a.htmlからc.hmtlのように) 3:各フォームに「A、B、Cの値を確認」ボタンがあります。 4:3のボタンをクリックすると、各テキストボックスで入力した 値が表示される。 【イメージ】 a.htmlのテキストボックスに、100を入力 b.htmlのテキストボックスに、200を入力 c.htmlのテキストボックスに、300を入力 した場合。 Aで入力された値は100です。 Bで入力された値は200です。 Cで入力された値は300です。 ______________________________________ と表示させる、cgiを作成したいです。 又、その際、hiddenを使用して行う方法(手順)を教えて頂けないでしょうか。 ファイルに書き込むことで、値を保持しておくのではと 考えましたが、a.htmlの値100を書き込み、再度、a.htmlの 値を書き込むと、a.htmlのフォームから送られた値が2つ(1回目、2回目)書き込まれた 状態になるように思います。 今回のように、例えば、ファームの入力値を保持して他の(b.thmlなど)に 遷移し、ボタンをクリックすると、全フォームの値を表示するような場合、 どのような方法が考えられるのでしょうか? どうぞ、宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • Perl初心者!

    はじめまして!UNKOです。あるサーバー上のファイルを参照し、そこにそのファイルがあった場合に、CGIを読み出したブラウザを強制的に書き換える方法はありますか?宜しくお願いいたします。※ここでいうファイルはフラグ的なものです

    • ベストアンサー
    • CGI
  • CGI,Perlで下記のようなことを、行いたいと考えています。

    CGI,Perlで下記のようなことを、行いたいと考えています。  a.html  b.html  c.html があり、 __________________________________ 1:それぞれ、フォームに、テキストボックスが一つあります。 2:他のフォームに遷移できます。(例:a.htmlからc.hmtlのように) 3:各フォームに「A、B、Cの値を確認」ボタンがあります。 4:3のボタンをクリックすると、各テキストボックスで入力した 値が表示される。 【イメージ】 a.htmlのテキストボックスに、100を入力 b.htmlのテキストボックスに、200を入力 c.htmlのテキストボックスに、300を入力 した場合。 Aで入力された値は100です。 Bで入力された値は200です。 Cで入力された値は300です。 ______________________________________ と表示させる、cgiを作成したいです。 又、その際、hiddenを使用して行う方法(手順)を教えて頂けないでしょうか。 ファイルに書き込むことで、値を保持しておくのではと 考えましたが、a.htmlの値100を書き込み、再度、a.htmlの 値を書き込むと、a.htmlのフォームから送られた値が2つ(1回目、2回目)書き込まれた 状態になるように思います。 今回のように、例えば、ファームの入力値を保持して他の(b.thmlなど)に 遷移し、ボタンをクリックすると、全フォームの値を表示するような場合、 どのような方法が考えられるのでしょうか? どうぞ、宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • CGI設定の初歩的な質問

    はじめてホームページを作成しているものです。 ホームページビルダー7を使っています。 「ホームページビルダー7スーパーレファレンス」という本を見ながらアンケートのページを作成しました。 そこに下記の説明が載っていたのですが、 「Program files」以下すべてのファイルを見つけることができません。 この本には、質問は一切受け付けない旨書かれていて困っています。 どなたかご存知の方、教えていただけないでしょうか? (引用:「ホームページビルダー7スーパーレファレンス」P.294の「フォーム属性とCGI設定」より) 「Program files」→「IBM Homepage Builder V7」→「sample」→「cgi」→「anketo」フォルダ内にアンケート用のCGIファイルとサンプルファイルがあります。  この中の「anketo.cgi」と「jcode.pl」の2つのファイルを、サーバー内のアンケートのトップファイルを置く予定のフォルダ内に転送します。 (引用終わり)

  • perlで

    $xが1に等しかったら ブラウザクライアントに 1.html を送り表示させ $xが0に等しかったら ブラウザクライアントに 0.html 送り表示させる ようにCGIファイルを作ることはできるでしょうか? ($x例えばはPOSTで受け取った変数です) 1.htmlや0.htmlを読み込みprintで一行ずつ書いていくことしかできないのでしょうか?

    • ベストアンサー
    • Perl
  • perlについて、教えてください。

    perlについて、教えてください。 formからのデータを受け取り、ファイルに書き込んでいく、cgiプログラムを考えているのですが、 その際、ファイルに特定の文字列があった場合、その行を削除して、書き込むという事を行いたいです。 例)test.htmlのテキストボックスに、値を入力(name="a_text")。そして、x.cgiファイルで, 「name=a_text」を取得し、keep.cgiファイルに書き込む。 再度、test.htmlの入力値を受け取り、ファイルに書き込む際に、ファイルに「a_text」があれば、その行を削除してから、a_textの2回目の入力値を書き込みたいと考えています ご存知の方、ぜひ、ご教授下さい。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • perl -wc

    telnet を利用できないユーザーの為に、ブラウザ上でPerl(CGI)の文法チェックができるようにしています。 フォームでファイル名を入力させ、チェックプログラム内で "perl -wc $filename" を実行して結果を出力させるだけだと思い作成したのですが、実行結果を受け取ることができません。 apache のログには実行結果が書かれているのでコマンドは正常に動作しています。  open(IN, "perl -wc $filename |");  while (<IN>) {   print $_; と  $ret=`perl -wc $filename`; でやってみましたがダメでした。 どなたかご教授願います。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • お問い合わせフォームの作り方について

    フリーのお問い合わせフォームをダウンロードし、今作ってるサイトにつけてブラウザで確認したところ、フォームにTESTと入力してエンターを押すとcgiのファイルが開いてしまいます。どのフォームにもそうなりますし、送信ボタン押してもそうなります。cgiの知識が全くないため原因がわからないです。もしおわかりになられる方、その経験あり!な方おられたらよろしくお願いします!!

    • 締切済み
    • CGI