コメント |
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
|