CGI-BBS > CGI > Perl > if文にハンドラを入れると syntax error に


カレッヂ
カレッヂ


質問者 Octo  投稿日 6/4(月) 12:01:53
下記のようなスクリプトをチェッカーにかけたところ、
MAIL1の方はノーチェックだったのですが
MAIL2の方がエラーになってしまいます。
何が問題なのかわかりません。


open (MAIL1,"|$mailpgm -t");
$mecs1 = "";
$mecs1 .= "To: $FORM{'email'}\n";
$mecs1 .= "Bcc: (略)\n";
$mecs1 .= "Reply-to: (略)\n";
$mecs1 .= "Errors-to: (略)\n";
$mecs1 .= "From: (略)\n";
$mecs1 .= "Subject: (略)\n\n";

(中略)

if ($FORM{'namekj2'} ne "") {
open (MAIL2,"|$mailpgm -t");
$mecs2 = "";
$mecs2 .= "To: $FORM{'email'}\n";
$mecs2 .= "Bcc: (略)\n";
$mecs2 .= "Reply-to: (略)\n";
$mecs2 .= "Errors-to: (略)\n";
$mecs2 .= "From: (略)\n";
$mecs2 .= "Subject: (略)\n\n";
(以下略)

よろしくお願いします。
回答者 まさ  [削除]  投稿日 6/4(月) 12:57:00
if文の}がないだけでは。

質問者 Octo  [削除]  投稿日 6/4(月) 13:25:32
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:25:47
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:26:09
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:26:35
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:26:59
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:27:34
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:27:55
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:28:01
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:28:07
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:28:34
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:29:24
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:30:04
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:31:24
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 13:32:53
それはさすがに私も考えたのですけれど、最後はちゃんと

close (MAIL2);
}

と締められております。

出てくるエラーというのが

String found where operator expected at(CGIのパス)line 312, near "open (MAIL2,""
  (Might be a runaway multi-line "" string starting on line 311)
        (Missing semicolon on previous line?)
syntax error (CGIのパス)line 312, near "open (MAIL2,""

・・・など、メールヘッダ部分全体に及んでいます。
ちなみにline 311 はif文開始部の行、312がOPENの行です。
質問者 Octo  [削除]  投稿日 6/4(月) 14:58:22
if文の最後はちゃんと

close (MAIL2);
}

・・・と締められていました。おかしいなぁと思ってよく見ると、
MAIL1のclose直前にあるデータファイル書き込み部分で

print "\n$FORM{'ref'}\t(略)\t$FORM{'pswrd'};

・・・となっていました。末尾のダブルクォーテーションが抜けていたのです。
これを書き加えたところ syntax OK となりました。

たいへんおさわがせいたしました。

このページは終了したので返信(回答)は書きこめません

Web裏技