WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:unless文で片方が正しく実行されない

0:[投稿] くじら [2004/12/18 22:29 ][環境:Mozilla,WinXP WinXP,AN Httpd, ActivePerl]

みなさんはじめまして。

現在、CGI(Perl)で掲示板を作ろうと思っています。

そのうち下記のコードで、#2はちゃんと実行されるのですが、#1の行だけがなぜか実行されません。空のファイルが作成されてしまいます。if文にしても(逆の意味で)同様です。ちなみに$dataの中にはちゃんとデータは入っております。構文が間違っているのでしょうか。どなたかお知恵をかしてください。

unless (rtn) {
    open(FH, ">bbs.txt");
    print FH $data, "\n"; #1
}
else {
    open(FH, ">>bbs.txt");
    print FH $data, "\n"; #2
}

close FH;


1:[回答] バギンズ [2004/12/19 03:02 ]

>空のファイルが作成されてしまいます。
それは、改行コード(\n)だけのファイルが出来ているのでもなく、FTPでサイズ確認して、本当に0バイトのファイルができているという事でしょうか?
サイズが0でなければ、$dataに入っているデータに問題があるかも。


2:[質問] くじら [2004/12/19 10:22 ]

改行コードが入っているわけでもなく、本当に0バイトです。
どう考えても構文エラーとも思えないし、該当行をelse文の外に出すとちゃんと実行されるので、print文がおかしいとも思えず。
ほとほど困っています。


3:[回答] AC1号 [2004/12/19 11:41 ]

>unless (rtn) {
これは以下の文と等価です(rtnという関数がなければ)。
unless ('rtn') {


4:[完了] くじら [2004/12/19 15:02 ]

すいません、結局else文の中の2行をサブルーチンに分けて、それを呼び出すなんていう回りくどいやり方などをいろいろやってたら、なぜが実行されました。が、また拡張しようとしたら上手く動きません。もう構文がどうのこうのよりも環境がおかしいと疑うほかないようです。

回答をくれたみなさん、ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World