ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: Perl 用 HTMLおよび変数の埋め込み手法
名前: lightbox
処理選択
パスワード

件名 Perl 用 HTMLおよび変数の埋め込み手法
名前 lightbox
コメント
PHP でも大差無いんですが、Perl の場合ヒアドキュメントが確実なようなので

get_data 関数の機能は、ファイルの中身を変数へセットするのですが、
その時点でファイルの中にある $ で始まる文字列を変数としてパースします。

要するに eval です。

[[html.cgi]]
@DIV
#!/usr/local/bin/perl

print "Content-type: text/html\n\n";


$head_height = "150";
$head_inner = "<b>ヘッド部分</b>";
&get_data( "head_unit", "./head.htm" );

$main_width = "950";
&get_data( "main_html", "./disp.htm" );

print $main_html;

#-------------------------------------------------
# 埋め込み用データ取得
#-------------------------------------------------
sub get_data {

	local($var_name,$file_path) = @_;
	local($buffer) = "\$$var_name = <<\"HTML_DATA\";\n";

	open(IN,$file_path);
	while (<IN>) {
		$buffer .= $_;
	}
	close(IN);

	$buffer .= "HTML_DATA";

	@C:red(eval)( $buffer );

}
@END

[[disp.htm]]
@DIV
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=EUC-JP">
<TITLE>HTML テンプレート</TITLE>
</HEAD>

<BODY id="body" style='margin-left:0px;margin-top:0px;'>

<DIV
	id="main"
	style='
		width: @C:red($main_width) px;
		background-color: #A0A0A0;
	'
>

@C:red($head_unit)
@C:red($body_unit)
@C:red($foot_unit)

</DIV>

</BODY>
</HTML>
@END

[[head.htm]]
@DIV
<DIV
	style='
		width: 100%;
		background-color: #A3A3A3;
		height: @C:red($head_heigh) px;
	'
>

@C:red($head_inner)

</DIV>
@END