記事No | : 2711 |
投稿日 | : 2008/01/25(Fri) 16:21:27 |
タイトル | : CGI/Perl作り方入門(技評)で |
ID情報 | : UTAKA |
投稿者 | : masa |
URL | : http://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 |
URL | : http://localhost |
Perl のバージョンは5.8です