Perlについての質問です。


@htmlという変数の中にHTMLファイルを外から読み込んだとします。

open(LOAD,$err_html_file);
@html = <LOAD>;
close(LOAD);

print @html;

で綺麗にブラウザ上に出るのですが、もし読み込んだHTMLの中が

<html>
あなたの故郷は$msgです。
</html>

と変数$msgが入っていて、

open(LOAD,$err_html_file);
@html = <LOAD>;
close(LOAD);

$msg = '九州の佐賀';

print @html;

で$msgを生かす為にはどうしたらいいでしょうか?変数の中にHTMLファイルが入っていて、そのHTMLファイルの中に変数が入っていたら?

という質問です。わかりづらくてすいませんが、よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:2006/08/31 11:25:43
  • 終了:2006/09/07 11:30:03

回答(4件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402006/08/31 11:36:51

ポイント27pt

foreach ( @html ) {

s/\$msg/$msg/g;

}

で可能だと思います。

ただ、質問を見る限り実際にやりたいことは、

foreach ( @html ) {

eval '$_ = "$_"';

}

な感じだと思うのですが、これは予期しない副作用が起こる可能性があるので、お勧めしません。

また、このような場合実際のサイトでは

HTML::Template

http://perldoc.jp/docs/modules/HTML-Template-2.6/HTML/Templa...

などのモジュールをよく使います。

id:zachouR

置き換える事が必要なんですね、、、。

ありがとうございます。モジュールの方も調べてみます。ありがとうございます!

2006/08/31 11:49:35
id:Iwa No.2

Iwa回答回数120ベストアンサー獲得回数62006/08/31 11:36:55

ポイント27pt

> @htmlという変数

これ(@html)は変数ではなく配列です。


既に配列に読み込まれた内容は"文字列"として認識されていますので、変数として扱うことができません。

この場合は、例えば以下のようにprintで出力する直前に置き換えるしかありません。

foreach (@html){

s/\$msg/$msg/g;

print;

}

id:zachouR

ありがとうございました。大変参考になりました。やはり、置き換えるしかないんですね、、、。

さっそく組み込んでみます!

2006/08/31 11:48:28
id:kn1967 No.3

kn1967回答回数2915ベストアンサー獲得回数3012006/08/31 11:40:35

ポイント26pt

$msg = '九州の佐賀';

の一行を以下の3行に変更

foreach(@html) {

$_ =~ s/\$msg/九州の佐賀/;

}

ご存知かと思いますが、環境によっては一部日本語が文字化けします。

id:zachouR

文字化けは注意しなければいけない点だと思っています(;;

解説ありがとうございました!!

2006/08/31 11:59:10

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 ootatmt 1307 1197 65 2006-08-31 13:39:27

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません