新規記事投稿 フォロー記事投稿 記事のキャンセル
From: TAD <hotani@mua.biglobe.ne.jp>
Subject: Re: サブルーチンが動かない?
Date: 2000/06/01 14:19:11
Reference: mesh.forum.4/00205

5月31日に、kobaさんは書きました。

>うぇぶ会議室についての質問等、どこに書けばいいのか
>わからずあちこち?に書いてしまいました。^^;

「灯台もと暗し」といいますか... (^^;;

>5月30日に、TADさんは書きました。
>
>>過去の記事にあったような気がするのですが、
>
> もうしわけありません。過去の記事はまだ全て読んでなかったり
>します。いちお検索もしてみたんですが・・
># 質問する前には過去の記事をちゃんと読んでから・・っていう大鉄則
>#は知っているつもりなのに、そうしてませんでした。

別にそういう意味で言ったわけではないので気にしないでください。
私だって探せそうにありませんし... (^^;;
記憶違いかもしれませんから。 (^^;;;;

>>文字コードを単純にEUCに変換しただけではうまく動かない、という回答を
>>昔にあさんがしていたと思います。違ってたらごめんなさい。
>
> なるほど・・
> 以前、Perlの勉強がてらに簡単なPerlを書いたときにも同様の問題に
>ぶつかりました。詳細はよく覚えてないのですが、漢字コードというよりは、
>改行コードの問題だと思ってます。
> つまり、「CR+LF」だとだめで、「LF」のみじゃないと。

そういう理由ではなかったと思います。<じゃぁ、どういう理由だ!(--メ)

この辺の答えはにあさんを待ちましょう。(^^;;

>おそらく、作者さまもこのことを前提として配布している Shift-JISのファイル
>も改行コードは LF のみとなってますね。

これはそうではなくて、ただ単ににあさんがHP-UX(標準でS-JISをサポートしているUNIX)を使っているから、
じゃないかとにらんでます。

>>まずは、コード変換しないままで動かしてみたらどうでしょうか。
>
> 実は投稿してからやってみたのですが、結果は同じでした。

コード変換する前のもの、というよりにあさんの所からダウンロードしたまま
(とは言っても、最低限各スクリプトの1行目のperlのパスは修正して)
のファイルをサーバに置いて実行するとどうなりますか、フレームは表示されませんか?

>ただ、、、本来の動きとしては、この場合の出力って、「Bad Forum」と出力
>されるだけではなく、それに続いて HTMLのソースを吐きますよね?
> じゃないと、ブラウザで表示できないから。
> ですが、私の場合には、続くはずのHTMLのソースが吐き出されないのです。
>「Bad Forum」だけしか吐き出されないのでやっぱりブラウザで表示されない
>のです。

この「Bad Forum」を出力しているのは、forum.plの以下の関数ですが、
そこではHTTPヘッダに続けてHTMLを出力しその中で「Bad Forum」も出力していますから、
「Bad Forum」だけが出力されるというのもおかしい気がするのですが。

「「Bad Forum」だけしか吐き出されないのでやっぱりブラウザで表示されない」とおっしゃってますが、
これはコマンドラインから実行したときの話ということでよいですか?

sub main'WarningMsg {
	local($output);
	local($help) = &help('error');
	local($reason) = @_;

	$output = "Content-Type: text/html\n\n";
	$output .= <<"EOL";
<HTML>
<HEAD><TITLE>$reason</TITLE></HEAD>
$body
<H1>$reason
$help</H1>
EOL
(以下省略)


最初の投稿に以下の記述がありましたが、
HTTPヘッダが出力されないとこんなエラーが出ましたっけ?>識者の方

「index.cgi を実行したのですが、Internal Server Error になり、error_logに
 Premature end of script headers: /home/users/koba/public_html/forum/article.cgi」

とするとやっぱり上の部分の関数が正常に動作していないということなのでしょうかね。

>1) もともと index.cgi にて&forum'convert_print(*output); でHTMLを吐き出して
>  くれなかったので、print $output; に変更したのと同様のことを、article.cgi 
> でも行った。  しかし現象はかわらず、HTMLを吐き出してくれない。
>  そこで強引に
>    $title = forum::get_title($room); 
>  により取得されるはずの titleを $title = 'test' と強引にセット。

そういうことをしなくても、ブラウザからURLを指定する時に
下のように'room='で会議室を指定してあげれば投稿フォームは表示されますよ。

http://www〜.jp/〜/article.cgi?room=mesh.npc.2

>2) UNIXマシンではなく、Windows98上にて、ANHTTPDと、ActivePerl にて
>   動作を試みた。(漢字コード等変更せず)
>    -> site.pl への必要な情報を盛り込んでみたらあっさりとHTMLは表示。
>        ただし、上記と同じように、投稿フォームにて投稿/プレヴューしようと
>       しても元に戻っちゃう・・・

これはなぜでしょうね。
オリジナルのスクリプトのままなら正常に動作すると思うのですが...

これ以上は何とも言えません。すみません。

全体的に言えますが、なにをやったらどうなったのかをもう少し具体的に説明して
いただけると助かるのですが。
あるいは設置しようとしているうぇぶ会議室の場所を提示してもらってもいいですし。
もしかしてローカルな環境ですか?

> Perlの知識がなくても、簡単に設定できる・・・・・・と思ってたのに今は、
>Perlの本と格闘中です。

それはそれで、勉強になってよいと思いますよ。
あとあと役に立つでしょうから。(^^)