人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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ファイルの中に変数が入っていたら?

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

●質問者: zachouR
●カテゴリ:インターネット ウェブ制作
✍キーワード:HTML open Perl print あなた
○ 状態 :終了
└ 回答数 : 3/4件

▽最新の回答へ

1 ● b-wind
●27ポイント

foreach ( @html ) {

s/\$msg/$msg/g;

}

で可能だと思います。

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

foreach ( @html ) {

eval '$_ = "$_"';

}

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

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

HTML::Template

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

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

◎質問者からの返答

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

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


2 ● Iwa
●27ポイント

> @htmlという変数

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


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

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

foreach (@html){

s/\$msg/$msg/g;

print;

}

◎質問者からの返答

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

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


3 ● kn1967
●26ポイント

$msg = '九州の佐賀';

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

foreach(@html) {

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

}

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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ