-PR-
  • すぐに回答を!
  • 質問No.7451675
解決
済み

cgi.pmを使ったcgiに変更したのですが・・

  • 閲覧数374
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 64% (37/57)

http://okwave.jp/qa/q7449935.html

すみません、間違えて解決を押してしまいました・・・解決していないです。

前回返信いただいた内容を参考に、cgi.pmを使ってみることにしたのですが、
上手くいきません。
ボタンが表示されなくなってしまいました。
perlのcgiは作り方が色々あって選択が大変です・・・・・

#!/usr/bin/perl
# wT付けるとエラー
# 2012/05/01 cgi.pm使用開始
require 'cgi-lib.pl';# cgi-lib.plを呼び出す
require "jcode.pl";# jcode.plライブラリを組み込む
###########################################################################
use strict;
use CGI;
my $q = new CGI;

print $q->header(-charset=>"Shift_JIS");
print $q->start_html(-title=>"てすと", -BGCOLOR=>'#ffffff'),
$q->li,# 空白?
$q->center($q->h1('CGI.PM')),# 文字を大きく書く
$q->br,
$q->br,
$q->li('<FONT color="brack">テスト?</FONT><BR>'),
$q->li('<form action = \"***.cgi\" method=\"post\">');# ***.cgiにpostで送信
$q->li('<BUTTON type="submit"> テストボタン </BUTTON>'),
$q->li('</form>'),
$q->br,
$q->strong("強調文字"),
$q->br,
$q->end_html;
$q->hr,# 線を引く
print "以下のパラメータを受け取りました。<BR>";
my ( $name, $value );
foreach $name ($q->param ) {
print "$name:\n";
foreach $value ( $q->param( $name ) ) {
print " $value\n";
}
}
exit;
通報する
  • 回答数2

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

  • 回答No.2
レベル10

ベストアンサー率 66% (101/151)

> # wT付けるとエラー
これは、すでに指摘があったように、文法ミスがあったので、perl -w (=use warnings)でエラーを検出して停止したんでしょう

> require 'cgi-lib.pl';# cgi-lib.plを呼び出す
> require "jcode.pl";# jcode.plライブラリを組み込む
cgi-lib.plもjcode.plも使わないほうがいいです。古すぎます。どうしても使わなければならないという理由があれば別ですが。

CGI.pmを使えばcgi-libは不要になるはずです。日本語の文字列を処理したいときは、use Encodeしましょう。Encodeの使い方は
http://blog.livedoor.jp/dankogai/archives/51031595.html
などが参考になるでしょう。

> $q->li('<FONT color="brack">テスト?</FONT><BR>'),
li はhtmlで言うところの List Itemタグ(<li>)です。CGI.pmのタグ出力は必ずしも必須でないです。つまり、HTMLの出力を全部CGI.pmでやらなくてもいいです。

以下、空白2文字を全角空白していることに注意。use utf8しているので、CGIスクリプト中(perlスクリプト中)に日本語を埋め込むときはutf8で保存のこと。
binmode STDIN, ":encoding(cp932)"; binmode STDOUT, ":encoding(cp932)"; しているので、入出力はCP932(=Windows Shift jis)になる。

use strict;
use warnings;
use utf8;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use CGI::Pretty;

# Windows Shift JIS
binmode STDIN, ":encoding(cp932)";
binmode STDOUT, ":encoding(cp932)";

my $q = CGI->new();

print $q->header( -charset => 'Shift_JIS', -type => 'text/html' ),
  $q->start_html( -title => 'TEST' );

my $name = $q->param('username');
if ( !defined($name) or $name eq '' ) {
  $name = 'Anonymous';
}
print $q->h1("Hello $name");

print << "END_BODY";
<form method="POST" action="foo.cgi" enctype="multipart/form-data">
 user name: <input type="text" name="username" value="$name" />
 <br />
 <input type="radio" name="look_behind" value="A" />Value A
 <input type="radio" name="look_behind" value="B" checked="checked" />Value B
 <input type="radio" name="look_behind" value="C" />Value C
 <br />
 <input type="checkbox" name="checkbox" value="ON" lablel="checkbox_label" />checkbox
 <input type="hidden" name="sample" value="red" />
 <input type="hidden" name="sample" value="blue" />
 <br />
 <input type="submit" name="Send" value="Send" /><div><input type="hidden" name=".cgifields" value="checkbox" />
 <br />
 <input type="hidden" name=".cgifields" value="look_behind" />
</form>
END_BODY

print $q->hr, "<pre>\n";
my @params = $q->param;
for my $param (@params) {
  print "$param:\n";
  my @values = $q->param($param);
  for my $value (@values) {
    print " $value\n";
  }
}
print "</pre>\n";

print $q->end_html;
補足コメント
kmwrod

お礼率 64% (37/57)

すみません、上記コードを試してperl -cにてコンパイルしてみたところ、エラーになってしまいました。
やはりwTのところでエラーがでてしまいます。

"-T" is on the #! line, it must also be used on the command line at enncoding.cg
i line 1.
投稿日時 - 2012-05-02 17:07:15
お礼コメント
kmwrod

お礼率 64% (37/57)

回答ありがとうございます。

wTがエラーではなく、エラーがあるからwTの箇所でエラーになるのですね。
wTが使えないのかと思ってしまいました。
エラー箇所もコンパイラが教えてくれたら良いのですが・・・
cやvbaコンパイラのようにはいかないのですね。

文字コードのプログラムもやってみます。
頑張ります。
投稿日時 - 2012-05-02 12:59:04
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 42% (1231/2878)

> $q->li('<form action = \"***.cgi\" method=\"post\">');# ***.cgiにpostで送信 「;」じゃなくて「,」では。 ...続きを読む
> $q->li('<form action = \"***.cgi\" method=\"post\">');# ***.cgiにpostで送信

「;」じゃなくて「,」では。
お礼コメント
kmwrod

お礼率 64% (37/57)

ああああ、気が付きませんでした!

ありがとうございます!
投稿日時 - 2012-05-02 10:21:01
  • 回答数2
このQ&Aのテーマ
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


-PR-

ピックアップ

-PR-
ページ先頭へ