新規記事投稿
フォロー記事投稿
記事のキャンセル
From: koba
<mailto:ykoba@dcn.ne.jp>
Subject: Re: サブルーチンが動かない?
Date: 2000/05/31 12:42:44
Reference: mesh.forum.4/00204
うぇぶ会議室についての質問等、どこに書けばいいのか
わからずあちこち?に書いてしまいました。^^;
ごめんなさい。
5月30日に、TADさんは書きました。
>過去の記事にあったような気がするのですが、
もうしわけありません。過去の記事はまだ全て読んでなかったり
します。いちお検索もしてみたんですが・・
# 質問する前には過去の記事をちゃんと読んでから・・っていう大鉄則
#は知っているつもりなのに、そうしてませんでした。
>文字コードを単純にEUCに変換しただけではうまく動かない、という回答を
>昔にあさんがしていたと思います。違ってたらごめんなさい。
なるほど・・
以前、Perlの勉強がてらに簡単なPerlを書いたときにも同様の問題に
ぶつかりました。詳細はよく覚えてないのですが、漢字コードというよりは、
改行コードの問題だと思ってます。
つまり、「CR+LF」だとだめで、「LF」のみじゃないと。
おそらく、作者さまもこのことを前提として配布している Shift-JISのファイル
も改行コードは LF のみとなってますね。EUCに変換したときにももちろん
LFのみとしました。
>まずは、コード変換しないままで動かしてみたらどうでしょうか。
実は投稿してからやってみたのですが、結果は同じでした。
>>これは、article.cgi によって表示されるはずですので、同様にコマンドラインから
>>>perl article.cgi としてみたら表示されるのは、Bad Forum の文字。
>>コマンドラインからステップ実行でデバッグしてみると、
>>$title = forum::get_title($room);
>>&WarningMsg('Bad Forum') if ($title eq '');
>>のところだと思います。つまり、$title に正しく値が入っていないのでしょうか?
>
>article.cgiは記事の投稿用のフォームを出力するCGIですが、
>これを実行するときには最低限、どこの部屋への投稿かを指定する必要があります。
>「新規記事投稿」のリンクを見るとわかりますが、'article.cgi?room=hogehoge'と
>なってますよね。
>なので、上記の「Bad Forum」が出力されるのはarticle.cgiが正常に動作している
>証拠です。(^^)
そうですね。投稿してから、それに気がつきました。
ただ、、、本来の動きとしては、この場合の出力って、「Bad Forum」と出力
されるだけではなく、それに続いて HTMLのソースを吐きますよね?
じゃないと、ブラウザで表示できないから。
ですが、私の場合には、続くはずのHTMLのソースが吐き出されないのです。
「Bad Forum」だけしか吐き出されないのでやっぱりブラウザで表示されない
のです。
そこで、先に投稿してからいくつか試しました。
1) もともと index.cgi にて&forum'convert_print(*output); でHTMLを吐き出して
くれなかったので、print $output; に変更したのと同様のことを、article.cgi
でも行った。 しかし現象はかわらず、HTMLを吐き出してくれない。
そこで強引に
$title = forum::get_title($room);
により取得されるはずの titleを $title = 'test' と強引にセット。
-> 投稿フォームが表示された。
しかし、入力し、投稿、プレヴュー を押してもまた投稿フォームに
もどっちゃう・・ やっぱり $titleに正しく値が入っていないから?
2) UNIXマシンではなく、Windows98上にて、ANHTTPDと、ActivePerl にて
動作を試みた。(漢字コード等変更せず)
-> site.pl への必要な情報を盛り込んでみたらあっさりとHTMLは表示。
ただし、上記と同じように、投稿フォームにて投稿/プレヴューしようと
しても元に戻っちゃう・・・
UNIX上のPerlはPerl5ですので、パッケージ内のサブルーチンの呼び方も
ためしに、Perl5の記述にしてみましたがやっぱり変わらず。。
&forum'convert_print(*output); -> form::convert_print(*output);
一体何が問題なのだろう・・・参ってます。
Perlの知識がなくても、簡単に設定できる・・・・・・と思ってたのに今は、
Perlの本と格闘中です。