KENT-WEB サポートコーナー 過去ログ [ 0130 ]


記事No: 2711
投稿日: 2008/01/25(Fri) 16:21:27
タイトルCGI/Perl作り方入門(技評)で
ID情報: UTAKA
投稿者: masa
URLhttp://localhost

CGI/Perl作り方入門(技術評論社)を使わせて頂いてます。
厳格なPerl?を学びたいのでuse strict、use warningsを追加してローカルなPCで試してます。
Chapter05 フォームメールを作ろう で動作が変わってしまうので、もし、お解りでしたらお教えください。

formmail.cgiのノーマルな状態(書籍の通り)でformmail.htmlより、全て空欄で 「送信する」をクリックした場合、
 emailが未入力です、性別が未入力です、ページが未入力です
 と、3つのエラーが表示されるのが正常な(意図された)動作ですが、
 下記の場合
 「emailが未入力です」の1つエラーが表示がされ、
 error.logに「Use of uninitialized value in string eq at〜」と2行出てしまいます

やった事 下記の4点
1:3行目に下記4行追加
use strict;
use warnings;
my ($backurl,$buf,$mailto,$sendmail);
our (%in,@key,@val);

2:if判定変更(メール送信)
# メール送信
if ($in{'mode'} eq "sendmail") { &sendmail; }
 ↓下記に変更 
if (define $in{'mode'} && $in{'mode'} eq "sendmail") { &sendmail; }

3:if判定の追加(sub preview )
# 必須の入力項目を配列化(@needに代入)
my @need = split(/,/, $in{'need'});
 ↓下記に変更 
my @need = split(/,/, $in{'need'}) if defined($in{'need'});

4:if判定変更(sub preview)
if ($in{$need} eq "") {
 ↓
if (defined($in{$need}) && $in{$need} eq "") {

-------------------------------------------------
 エラーログ:Use of uninitialized value in string eq at〜は、上記の4の部分です。


記事No: 2712
投稿日: 2008/01/25(Fri) 16:31:53
タイトルRe: CGI/Perl作り方入門(技評)で
ID情報: UTAKA
投稿者: masa
URLhttp://localhost

Perl のバージョンは5.8です


[検索ページ]