CGI-BBS > CGI > Perl > Perlについてテキストファイル内容を表示させるようにしたい。


カレッヂ
カレッヂ


質問者  投稿日 2005/3/12(土) 22:02:20
はじめまして

これまでCGIの設置やHTML作成くらいしかした事のない素人です。

えっと質問なのですが、タイトルの通り、テキストファイルをボタン
やラジオボタンなどを使わないで単に表示させる様にしたいのですが、
テキストファイルの形式はカンマ区切りです。レコード名称もついて
おります。

また特定のレコードのみを表示、というのは可能でしょうか?
可・不可だけでも知りたいです。

とりあえずはそのままテキストファイルの内容表示する方法から
段階を進めていこうかなと思っております。
よろしくお願いします。

【習熟度】多少の設置経験

回答者 jokerz  [削除]  投稿日 2005/3/13(日) 04:30:45
はじめまして。jokerzです。
いまいち質問の内容がわからないのですが、プログラムから
テキストファイルを読み込んで、ブラウザ上に(テキストファイル
の内容はそのまま)HTML出力したいということですか?
もし、そうであれば…(perlなら)

#!/usr/bin/perl

use strict;
use CGI;
my $QryCGI = new CGI;

#####@ここに出力したいテキストファイルがあるとする
my $File = '/file/file.txt';
my $Data;

if (-e $File) {
   #####@ファイルを開く…上でファイルが存在してることを確認して開けない場合はエラーメッセージ
    open(FF,$File) or die "ファイル:$File を開けない $! \n";
    my @FILE = <FF>;
    close (FF);
    
    ####@読み込んだデータを$Dataに格納する
    foreach (@FILE) {
        $Data .= $_;
    }
}

print $QryCGI->header(-charaset=>"EUC");
print $QryCGI->start_html ();
#####@ここでテキストファイル内容にタグがあってもそのまま出力
print $QryCGI->escapeHTML($Data);
print $QryCGI->end_html ();

exit ();

能率がよいか、もしくは無駄なことをしてるという
指摘を受けるかもしれないですが、こんな感じでうまく動くはずです。


質問者  [削除]  投稿日 2005/3/13(日) 21:17:07
jokerz様。初めまして、お返事ありがとうございます。

私の質問の仕方が下手で本当に申し訳御座いませんでした。(汗)
今回の目的はまずはHTMLにテキストデータの内容を表示させる事
なのですが、まずはそこからスタートしようという事なんです。
最終的にはHTMLのテーブルの任意の箇所にテキストファイルの
任意のレコードのデータを表示させる事が出来たらな〜なんて
思ったりしてます。

でも本当にCGIもPerlもその違いすら分からない者なので、それが
出来るかどうかも分からなくて…だから取り合えず出来そうな事
から初めてみようかと思った次第で御座います。

今回ご教授頂きました手法も実際にどんな動きをするのか見てみたい
ので勉強の為に使わせて頂きたいと思います。

jokerz様、ありがとう御座います。
質問者  [削除]  投稿日 2005/3/15(火) 14:53:12
こんにちわ!

えっと取り合えずテキストデータの表示は出来るようになりました。
が、文字が化けていたり、レコードの配列が正しくなかったりします。
多分改行がされていないのかな?って思うのですが、こういうのは
どうしたら良いのでしょうか?

宜しくお願い致します。
回答者 jokerz  [削除]  投稿日 2005/3/16(水) 02:10:18
仲 様
こんばんは。
文字化けしてるとのことですが、文字コードの
指定はしましたか?
例えば、文字コードをEUCで保存したファイルをブラウザで
見るときに文字コードをsjisに指定して見ると文字化け
しますよね?(ファイルの文字コードを何で保存したか)
ということで、HTML文内の<head>〜</head>内でキャラセット
を指定してください。
<meta http-equiv=Content-Type content="text/html; charset=shift_jis">
上記は文字コードをshift_jisに指定してます。EUCならcharset=EUC
みたいにしてください。
質問者  [削除]  投稿日 2005/3/16(水) 09:18:52
jokerz様。こんにちは、お返事ありがとうございます。

私がPerl設置について根本的なところを理解していないんだと思います。
というのもちょっと思ったんですが、ご教授頂きましたソースって保存
するときの形式は「***.pl」にするのでしょうか?実は「***.cgi」で保存し、
直接URLを『HTTP://computer/cgi-bin/***.cgi』ってしたりしてます。
間違っています?(汗)

これまでフリーのCGI掲示板とかカウンタくらいしか設置した事がなかったので、
Perlファイルを設置するとき、CGIファイルをどう構成したら良いのか分かりません。

全く検討違いの質問していたら申し訳御座いません。ただその辺の仕組みがよく
解らないので、勝手な想像ばかりしているんだと思います。(苦笑)

今回なぜこういった質問をしたのかというと、「HTML文内の<head>〜</head>内で…」
ってところが気になったんです。「***.htm」がいるの?って思ったんです。(汗)
「***.htm」に記述するのは記載されている事そのままなので解ります。「***.cgi」
で行うのであれば『print qq! <html><head><meta http-equiv=……></head>』って
すれば良いのも何となく解ります。解ってないのはそれぞれの形式ファイルを用意した
時のその扱い方が解っていないんだと思います。(汗)

なんか当初の質問の趣旨から大分方向性がずれてきていますが、よければこの辺の事も
ご教授いただけないでしょうか。

よろしくお願いします。
質問者  [削除]  投稿日 2005/3/16(水) 15:03:01
jokerz様。お世話になっております。

文字化けの件ですが、これは表示するIEのエンコードが
「西ヨーロッパ言語(ISO)」になっておりました。(爆)
「日本語(自動選択)」にしたらちゃんと表示されるようになりました。

えっとそれから単純に表示させる、という意味では解決という事なので、
まだまだ気になる事はあるのですが、一旦締め切らせていただきます。

jokerz様、本当に色々とありがとう御座いました。

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


Web裏技