カレッヂ |
質問者 あまちゃ
投稿日 9/16(日) 23:27:35
フォームから来場者名と居住地を入力してもらい、 それを別のHTML文書(短編小説のようなもの)の中で使用したいのです。 文章中の名前などのところに印をつけておいて、 受け取ったデータで置き換えると言うような処理はどうしたらいいのでしょうか。 とりあえずこういうのを考えたのですが、 案の定と言うか、動きません。 置換方法を教えて下さい。 $stoly='stoly.html'; open(SS,"<$stoly"); @naiyou=<SS>; close(SS); $index=0; while($naiyou[$index]){ if($naiyou[$index]=~/$name/){ $name=$data{'name'}; } if($naiyou[$index]=~/$city/){ $city=$data{'city'}; } $index=$index+1; } |
回答者 vagabond
[削除]
投稿日 9/17(月) 00:16:21
まず、一度、stoly.htmlを読み込み、それを置換してstoly.htmlに書き込みを しなくてはいけません。 で、サンプルとして作ってみました。$name,$city,%dataは適当につけてます。 ついでに、元のファイルのバックアップをとるようにしました。 use strict; my $stoly='stoly.html'; my $name="monkey"; my $city="tokyo"; my(@buffer1,@buffer2); my %data=(name=>"mouse",city=>"new york"); local(*SS,*NEW); open(SS,"<$stoly"); my @naiyou=<SS>; close(SS); for(@naiyou){ my $newline=$_; if($newline=~/$name/i){ $newline=~s/$name/$data{name}/g; } if($newline=~/$city/i){ $newline=~s/$city/$data{city}/g; } push(@buffer1,$newline); push(@buffer2,$_); } open(NEW,">$stoly"); for(@buffer1){ print NEW; } close(NEW); open(BACKUP,">$stoly".".bak"); for(@buffer2){ print BACKUP; } close(BACKUP); |
質問者 あまちゃ
[削除]
投稿日 9/17(月) 17:19:10
あ、書き換えをしてませんでしたね。 直したら無事動きました。 ありがとうございました。 |
返信(回答)する
Web裏技 |