CGI-BBS > CGI > Perl > html からcgiへの出力


カレッヂ
カレッヂ


質問者 まこと  投稿日 10/20(土) 13:10:54

環境Windows2000 AN HTTPD perl v5.6.1

htmlからCGIにデータを送り、
CGIから出力されるデータの最後の一文字を改行して、
htmlに表示させる事は可能でしょうか?


HTML側
<FORM ACTION="000.cgi">
<INPUT TYPE=text NAME="000">

CGI側
$form=CGI->new();
$a=$form->param("000");
print"<html>\n";
print"$a\n";
print"</html>\n";
上記よりhtmlに出力されたデータは下記のようになるのですが、
0001
↑このデータを
000
1
上記のように最後の一文字だけ改行して表示させる事は可能でしょうか?
また、可能である場合、どのように記述すればよいかをご教授していただけないでしょうか?

よろしくお願いします。




回答者 vagabond  [削除]  投稿日 10/22(月) 01:14:32
paramで取った値を置換なり分解して、挿入するなりすればいいのでは?

例えば、

#!/usr/local/bin/perl
use CGI;

my $form=CGI->new();
my $a=$form->param("text");
$a=~s/^(.*)(.)$/$1<br>$2/;
my $p=new CGI;
print $p->header,$p->start_html('sample'),$p->h1($a),$p->end_html;
質問者 まこと  [削除]  投稿日 10/22(月) 19:52:50
vagabondさんありがとうございます。
早速試したところうまくできました。

もうひとつ教えていただきたいのですが、
出力したいデータが複数の場合、

my $a=$form->param("text");
$a=~s/^(.*)(.)$/$1<br>$2/;

↑この項目を増やしていけばいいのでしょうか?

my $a=$form->param("text");
my $b=$form->param("text");
$b=~s/^(.*)(.)$/$1<br>$2/;
$a=~s/^(.*)(.)$/$1<br>$2/;

↑このように記述していけばよいのでしょうか?

お手数お掛けしますが、ご教授いただけるようお願いします。
回答者 vagabond  [削除]  投稿日 10/22(月) 23:58:07
複数個の入力がある場合ですか?
それなら、そうですね、同じのを入れればいいです。

#!/usr/local/bin/perl
use CGI;

my $form=CGI->new();
my $a=$form->param("text0");
my $b=$form->param("text1");

my $p=new CGI;
$a=~s/^(.*)(.)$/$1<br>$2/;
$b=~s/^(.*)(.)$/$1<br>$2/;
print $p->header,$p->start_html('sample'),$p->h1("$a<p>$b"),$p->end_html;
質問者 まこと  [削除]  投稿日 10/23(火) 09:19:17
vagabondさん、度々ありがとうございます。
最後に質問させていただきたいのですが、  

print $p->header,$p->start_html('sample'),$p->h1("$a<p>$b"),$p->end_html;

↑この記述は改行しても大丈夫でしょうか?

print $p->header,
$p->start_html('sample'),
$p->h1("$a<p>$b"),
$p->end_html;

↑このような記述はダメでしょうか?
もし、入力個数が50個ある場合、

$p->h1("$a<p>$b<p>$c<p>$d<p>$e<p>$f<p>$g<p>$h<p>$i<p>$j<p>$k<p>$l<p>$m<p>$n・・"),

↑このように長くなってしまいますよね?
このような場合、他に記述方法があるのでしょうか?
お手数お掛けしますが、よろしくお願いします。
回答者 vagabond  [削除]  投稿日 10/24(水) 00:12:51
改行しても大丈夫ですよ。それと、タブであけた方が綺麗ですかね。こんな感じで
print $p->header,
    $p->start_html('sample'),
    $p->h1("$a<p>$b"),
    $p->end_html;

$p->h1("$a<p>$b<p>$c<p>$d<p>$e<p>$f<p>$g<p>$h<p>$i<p>$j<p>$k<p>$l<p>$m<p>$n・・"),

こんなふうに大量の出力を扱う場合、一度、変数にヒアドキュメントで代入してからやると
いいかもしれませんね。

my $h1= <<H1;
$a<p>$b<p>$c<p>
$d<p>$e<p>$f<p>
$g<p>$h<p>$i<p>
$j<p>$k<p>$l<p>
$m<p>$n・・
H1
print $p->h1($h1);

長い文を変数等に入れる場合、ヒアドキュメントうまく使いましょうってことです。
質問者 まこと  [削除]  投稿日 10/24(水) 08:51:05
vagabondさん、とても参考になりました。
どうもありがとうございました。

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

Web裏技