@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ファイルの中に変数が入っていたら?
という質問です。わかりづらくてすいませんが、よろしくお願いいたします。
foreach ( @html ) {
s/\$msg/$msg/g;
}
で可能だと思います。
ただ、質問を見る限り実際にやりたいことは、
foreach ( @html ) {
eval '$_ = "$_"';
}
な感じだと思うのですが、これは予期しない副作用が起こる可能性があるので、お勧めしません。
また、このような場合実際のサイトでは
HTML::Template
http://perldoc.jp/docs/modules/HTML-Template-2.6/HTML/Templa...
などのモジュールをよく使います。
> @htmlという変数
これ(@html)は変数ではなく配列です。
既に配列に読み込まれた内容は"文字列"として認識されていますので、変数として扱うことができません。
この場合は、例えば以下のようにprintで出力する直前に置き換えるしかありません。
foreach (@html){
s/\$msg/$msg/g;
print;
}
ありがとうございました。大変参考になりました。やはり、置き換えるしかないんですね、、、。
さっそく組み込んでみます!
$msg = '九州の佐賀';
の一行を以下の3行に変更
foreach(@html) {
$_ =~ s/\$msg/九州の佐賀/;
}
ご存知かと思いますが、環境によっては一部日本語が文字化けします。
文字化けは注意しなければいけない点だと思っています(;;
解説ありがとうございました!!
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | ![]() |
1307回 | 1197回 | 65回 | 2006-08-31 13:39:27 |
置き換える事が必要なんですね、、、。
ありがとうございます。モジュールの方も調べてみます。ありがとうございます!