• ベストアンサー

TABを表示させる方法

以前のテキストファイルのhtmlタグ<>を文字として表示されるに続いての質問ですが、 #!/usr/bin/perl main:{ $file = 'use1.txt'; print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<TITLE>表\示</TITLE>\n"; open( FH, $file) or die "Can't open"; foreach( <FH> ){ $_ =~ s/</</g; $_ =~ s/>/>/g; print $_ ."<br>"; } close(FH); print "</BODY></HTML>\n"; } 表示するのにTABが抜けて、全て左詰めという感じになります。 TABを表示させるにはどうしたら宜しいのでしょうか? よろしくお願いします。

  • Perl
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ファイルからテキストを読み込む部分の前後を<pre>タグで 囲むとタブもブラウザ上にそのまま表示されます。 ただし改行やスペースなどもそのまま表示されてしまうので注意してください。

crazy_jazz
質問者

お礼

返事が遅くなってごめんなさい。 無事ブラウザでTabが表示されて思ったようになりました。 ありがとう御座いました。

その他の回答 (2)

  • mekerock
  • ベストアンサー率64% (9/14)
回答No.3

#2です #1さんの方法で、解決されたのでしたら、良いのですが、ブラウザによってはpreで括られた <br>改行 が、2行の改行となり、見にくくならないかな、と思い、タブを半角スペースに変換する方法を提示したつもりでした。 が、ごめんなさい。スペル、間違えました。 &npsp; ではなく、 &nbsp; です。 一応、念のために書くと、 &nbsp; はHTMLの半角スペースの特殊コードです。 さらに念のため書きますが、セミコロンは必須です。 あと、タブを表示したいところは open~close間で 展開するテキストだけですよね? 質問時のソースと違うので、確認ですが… #2の返信で頂いた内容はあるソースをHTML上に展開したい、と解釈しましたが、上記の修正をすれば、 &npsp が &nbsp;(x4 など、タブ一個に対するスペース量) となることで、HTML上は半角スペースによるインデントがされるはずです。

crazy_jazz
質問者

お礼

その方法で試してみたところきちんと反映されました。 まだ知識不足のためいろいろなやり方を目にして Perllの勉強になりとてもありがたく思っています。 どうもありがとうございます。

  • mekerock
  • ベストアンサー率64% (9/14)
回答No.2

$tab = "&npsp;" x 4;#数字はタブに変換したいスペースの数だけ指定 s/\t/$tab/g; がスマートでは?

crazy_jazz
質問者

お礼

九九のソースを表示させて見ましたが #!/usr/bin/perl main:{ &npspprint "Content-type: text/html\n\n"; &npspprint "<HTML><BODY>\n"; &npspprint "<TITLE>九九</TITLE>\n"; &npspprint "<TABLE ALIGN=CENTER BORDER=1>\n"; &npspfor ($i = 1; $i <= 9; $i++) { &npsp&npspprint "<TR>"; &npsp&npspfor ($j = 1; $j <= 9; $j++) { &npsp&npsp&npsp$siki = "$i * $j= "; &npsp&npsp&npsp$ans = $i * $j; &npsp&npsp&npspprint "<TD>$siki$ans</TD>"; &npsp&npsp} &npsp&npspprint "</TR>\n"; &npsp} &npspprint "</TABLE>\n"; &npspprint "</BODY></HTML>\n"; } こんな風になってしまいました。 下記の記事で解決していますがこれはどうゆうとき使用されるのでしょうか?

関連するQ&A

  • テキストファイルのHTMLタグを文字として表示させるには?

    テキストファイルのHTMLタグを文字として表示させるにはどうすればよいのでしょうか? <HTML>の"<"をJIS文字コードに置き換えれば良いというようなことを聞きましたが、 $_ =~ tr/</&lt);/s; この文字を置き換える式では駄目でした。 多分表記の仕方が間違っていると思うので正しいのをよろしくお願いします。 (上の置き換え文だと&HTML>になってしまいます。) #!/usr/bin/perl main:{ require "jcode.pl"; $file = 'file01.txt'; print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<TITLE>表\示</TITLE>\n"; open( FH, $file) or die "Can't open"; foreach( <FH> ){ $_ =~ tr/</&lt);/s; print $_ ."<br>"; } close(FH); print "<br>_<br><"; print "</BODY></HTML>\n"; }

    • ベストアンサー
    • Perl
  • tsvファイルの読み込みエラー

    ファイル読み込み後、内容表示するプログラムをつくったのですが、tsvファイルを読み込むとWEB画面には何も表示されず真っ白になってしまいます(普通のtxtファイルでもタブが入っていると表示しません)。tsv読み込み時は何か設定が必要なのでしょうか? #!/usr/local/bin/perl print "Content-Type: text/html\n\n"; print "<html>\n"; print "<head><title>サンプル</title></head>\n"; print "<body>\n"; if (open(FH, "data/block.txt")) { @file = <FH>; close(FH); print "<p>ファイルの内容は、<br>\n"; foreach $data (@file) { print "$data<br>"; } print "です。</p>\n"; } else { print "ファイルを読み込めません。"; } print "</body>\n"; print "</html>\n"; exit;

  • perl localhostでgifを表示するには

    超初心者からプログラムを初めて1週間、 プログラム言語にはperlを使用しています。 mac os x です。 perlの教科書読みながら、アクセスカウンタを作ろうとした所、 何故かgif画像が表示されません。 ネットの素材置き場からとってきましたが、パソコン自身、gif自体は認識してくれてます。 ただ、それをperlに組み込んで使おうとすると、表示されません。 ブラウザはfirefoxとsafariで試しましたが、両方認識してくれませんでした。 ちなみにソースは ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>アクセスカウンタ2</TITLE></HEAD>\n"; print " <BODY>\n"; print "<H1>test</H1><HR>\n"; if ( open ( FH , "count.txt")){ $cnt = <FH>; close( FH ); $cnt++; print"<CENTER>\n"; foreach $fld (split (// , $cnt)){ print "<IMG SRC=\"${fld}.gif\">"; } print"</CENTER>\n"; if ( open(FH, ">count.txt" )){ print FH $cnt; close(FH); } else { print "ファイルの書き込みオープンに失敗しました。\n"; } } else { print "ファイルの書き込みオープンに失敗しました。\n"; } print "</BODY>\n"; print "</HTML>\n"; __END__ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー です。 テキストファイルを確認しているので、 perl 自体の活動と、アクセスのログ?自体は正常に動いているみたいです。 お願いします。 助けてください!

    • ベストアンサー
    • Perl
  • perl の printでのファイルへの指示にて

    独学でmacでパールを勉強しています。 始めてからまだ1週間くらい。 教科書みながら、print命令でファイルハンドルに指示を出してるのですが、 書き込めはできるのですが、 ファイルが無い場合、 新規に自動でファイルが作成されるはずとの記載があったのですが、 何故か、自動でファイルが生成されません。 調べても、設定が必要等言われてますが、 mac自体も初心者でほとんどわかりません。 どのような設定にすればいいのでしょうか? また、ソースに何か悪い所があるのでしょうか? お助けください。   ちなみに下記がソースです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーー #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>アクセスカウンタ</TITLE></HEAD>\n"; print " <BODY>\n"; print "<H1>test</H1><HR>\n"; if ( open ( FH , "count.txt")){ $cnt = <FH>; close( FH ); $cnt++; print"<CENTER>あなたは${cnt}人目の訪問者です。</CENTER>\n"; if ( open(FH, ">count.txt" )){ print FH $cnt; close(FH); } else { print "ファイルの書き込みオープンに失敗しました。\n"; } } else { print "ファイルの書き込みオープンに失敗しました。\n"; } print "</BODY>\n"; print "</HTML>\n"; __END__ ーーーーーーーーーーーーーーーーーーーーーーーーーー

    • ベストアンサー
    • Perl
  • エラー表示の意味を解説してください

    CGI初心者です。自分の端末でサーバ設定し、テスト中の段階です。htmlファイルはブラウザからきちんと表示されました。が、CGIファイルを表示させようとすると、 CGI エラー - Content-Type ヘッダが正しくありません。 CGI 出力メッセージ: Can't open perl script "C:\www\hiro\ISO": No such file or directory とエラーがでます。ちなみに、スクリプトには #!/usr/bin/perl print"Content-type: text/html\n\n"; print"<HTML>\n"; print"<HEAD>\n"; print"<TITLE>CGI No1</TITLE>\n"; print"</HEAD>"; print"<BODY>\n"; print"CGIプログラム No.1,テスト成功!\n"; print"</BODY>\n"; print"</HEAD>\n"; と記述しました。なにがいけないのか教えてください。

    • ベストアンサー
    • CGI
  • Perlでファイルを読み込みタグを削除する方法

    以下のようなソースを書きました。 HTMLファイルを読み込み、タグを全て削除して他のファイルに書き込むソースです。 しかし、上手く動作しません。 問題点を教えていただけませんでしょうか。 お願いします。 #!/usr/local/bin/perl package www3sub2; sub main(){ open(FH, "<googlefile3_.txt"); my @file = <FH>; close(FH); open(OUTB,"> googlefile6.txt"); foreach(@file){ my $line = $_; $line =~ s/<("[^"]*"|'[^']*'|[^'">])*>//g; print OUTB "$line"; close(OUTB); } } 1;

  • perl の printでのファイルへの指示で

    独学でmacでパールを勉強しています。 始めてからまだ1週間くらい。 教科書みながら、print命令でファイルハンドルに指示を出してるのですが、 書き込めはできるのですが、 ファイルが無い場合、 新規に自動でファイルが作成されるはずとの記載があったのですが、 何故か、自動でファイルが生成されません。 調べても、設定が必要等言われてますが、 mac自体も初心者でほとんどわかりません。 どのような設定にすればいいのでしょうか? また、ソースに何か悪い所があるのでしょうか? お助けください。 下記は実験用に作ったソースですが、 作動もしてるのですが、  新規に自動でファイルが作成されるはず が 何故か作成されません。 ちなみに localhost上で動かしてます。 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>test</TITLE></HEAD>\n"; print " <BODY>\n"; print "<H1>test</H1><HR>\n"; open ( FH ,">tukuruzo.txt"); print FH "tukuruzo"; close ( FH ); print "</BODY>\n"; print "</HTML>\n"; __END__

    • ベストアンサー
    • Perl
  • ファイル作成時

    0~5までのHTMLファイルを作成したいと考えているのですが、下記2パターンでの実現方法をご掲示頂けませんでしょうか --------------------------------------------------------------- 1.下記の関数Aの中から関数Htmlを呼び出し、@list分n$_.htmlファイルを作成するというものなんですが print時、@aaaが(中身が空みたいで)読まれておらず、ファイル出力結果の内容は空行後、ファイル毎に ファイルの数字があるだけの状況です。 どうすれば数字.htmlファイル毎にsub Htmlの内容を表示後、その中に$aを入れる事ができますでしょうか sub A{ @list = (0, 1, 2, 3, 4, 5); foreach $_(@list) { @aaa = &Html($_); open(OUT,">$_.html"); print OUT "@aaa{$_}\n$_"; close(OUT); } } sub Html{my($a)=@_; print <<HTML; <HTML lang=ja > <HEAD> <TITLE></TITLE> <BODY>test$a </BODY></HTML> HTML } --------------------------------------------------------------- 2.sab Aの関数内にsub Htmlの内容自体を持ってくる形で実現する場合について これも同様に@aaaが(中身が空みたいで)読まれておらず、ファイル出力結果の内容は空行後、ファイル毎に ファイルの数字があるだけの状況です。 sub A{ @list = (0, 1, 2, 3, 4, 5); foreach $_(@list) { @aaa = print <<HTML; <HTML lang=ja > <HEAD> <TITLE></TITLE> <BODY>test$_ </BODY></HTML> HTML open(OUT,">$_.html"); print OUT "@aaa{$_}\n$_"; close(OUT); } } どなたか上記2点についてのいずれかでも結構ですので、ご教授願えませんでしょうか。宜しくお願い致します。

    • ベストアンサー
    • Perl
  • foreachの入れ子について。

    あるディレクトリ内の全てのファイル名を取得し、 全てのファイルを開いてカンマ、ダブルクォーテーション付加の処理をし、 別ファイルへと出力する。と言ったものを以下のように作ったのですが、 入れ子のforeach{}内へ入って行きません、 foreachの入れ子は出来ないのでしょうか? それともプログラムが間違っているのでしょうか? どなたかご教授お願いいたします。 require "./jcode.pl"; # jcode.plの呼び出し #ディレクトリ表示 opendir(DIR01,"./TestData") || die "can not open dir"; @FileName = readdir(DIR01); closedir(DIR01) || die "can not close dir"; foreach $file (@FileName) { if ($file eq '.') {next;} # '.'の時ループを抜ける if ($file eq '..') {next;} # '..'の時ループを抜ける $FName = "./TestData/$file"; # ファイルのオープン open ( FILEHANDLE , "$FName") || die "ファイルを開けません :$!\n"; @line = <FILEIN>; close (FILEIN); foreach $line (@line){ ######################### print "TEST-->$line\n"; ######################### $line =~ s/ⅰ|ⅱ|ⅲ|ⅳ|ⅴ|ⅵ|ⅶ|ⅷ|ⅸ|ⅹ//g; $line =~ s/\"/\"\"/g; $line =~ s/\,\"\?/\"\,\"/g; $line =~ s/\"\,\?/\"\,\"/g; $line =~ s/\ |\ /\"\,\"/g; &jcode::sjis2euc(\$line,"z"); # sjis --> euc コードへ変換 if (length $line != 1){ chop($line); $cd_22 = chr(0x0022); $line = "$cd_22$line$cd_22"; $line =~ s/([^\LF])$/$1\n/; } } open (FILEOUT, ">./log/TEST.txt") or die; #上書き時 print FILEOUT @line; close (FILEOUT); } } exit;

    • ベストアンサー
    • Perl
  • perlで文書を読み込み検索置換したい

    MAC OS Xを使用しています。 検索置換のプログラムをperで作成し、Applescript上で呼び出したいのです。 実際はファイルメーカーのスクリプトの中でApplescriptを記述してその中で呼び出したいのです。 do shell script "perl ~.pl"という感じで使えるのではないかと 下記のようなサンプルスクリプトを見つけたのですが 内容の更新の仕方がよく分かりません。 perlについては全くの初心者でいろいろ調べたのですがよく理解できませんでした。 検索置換したいのですが、どういうふうに書けばいいのでしょうか。 (2)の部分を教えて下さい。宜しくお願いします。 use strict; use warnings; use File::Copy 'move'; # (1) ファイルの内容を読み込む my $file = 'F:\共有\PERL\test.txt'; open my $fh, '<', $file or die qq/Can't open file "$file": $!/; my $content = do {local $/; <$fh>}; close $fh; # (2) 内容の更新 ▼をリターンに置き換えたいのです。 $line =~s/▼/\n/; # (3) 一時ファイルへの書き出し my $temp_file = "$file.$$." . int(rand 10000); open my $temp_fh, '>', $temp_file or die qq/Can't open file "$file": $!/; print $temp_fh $content; close $temp_fh or die qq/Can't open file "$file": $!/; # (4) 一時ファイル名を元のファイル名に変更 move $temp_file, $file or die qq/Can't move "$temp_file" to "$file": $!/;

専門家に質問してみよう