名前

HTML::EmbeddedPerl - (主に)HTMLへのPerlコード埋め込み

概要

自動 での実行が推奨されます。

自動的に実行されている

インスタンス化されたオブジェクト $epl が渡されます。 それは Apache::RequestRec(modperl)__PACKAGE__(cgi) のリファレンスです。 コードタグ内で使う例。

# output header ($key,$value)
$epl->header_out('Content-Type','text/html');
# set of contents type, default is 'text/html', output forcing.
$epl->content_type('text/html');

スクリプト内における使用

$htm = 何か;

use HTML::EmbeddedPerl;
$e = HTML::EmbeddedPerl->new();

# HTTPヘッダのセット (キー,値)
$e->header_out('Content-Create','foo');
# Content-Typeのセット、デフォルトは 'text/html'
$e->content_type('text/plain');

# HTTPヘッダとコンテンツの出力 (例:1)
$e->ep(\$htm);

# HTTPヘッダは出力されず、$rへコンテンツが返る
$r = $e->ep(\$htm);

# HTTPヘッダ出力
$e->flush;
# 上記と同じです (例:1)
print $r;

説明

(主に)HTMLのためのPerlコード埋め込み、それは簡素で容易です。

<$ Perl-Code $> をHTMLへ追加します。 またコードブロックが多数あれば、それらコードブロック間で局所化された変数は使用できません。

modperl2

グローバル変数使いたくないのであれば $var を使用してください。 $var は実行後に破棄されます。 しかしそれは複数タグの間においても使用することができます。

<FilesMatch ".*\.phtml?$">
SetHandler perl-script
PerlResponseHandler HTML::EmbeddedPerl
PerlOptions +ParseHeaders
</FilesMatch>

たぶん PerlResponceHandler modperl にも対応します。

cgi

最初の行へ挿入します。

#!/あなたの/パス/twepl

ラッパー

tweplを使うことができませんか? しかし wrapper.pl を利用することができます。

AddType application/x-embedded-perl .phtml
AddHandler application/x-embedded-perl .phtml
Action application/x-embedded-perl /your/path/wrapper

タイムアウト

ループ検知のためのタイムアウトを超えると強制終了します。 必要ならグローバル変数 $TIMEOUT を上書きして変更してください。

# 初期設定は "2" 秒です
$TIMEOUT = 2;

alarm の下で既に実行され、そのタイムアウトの変更はできません。

# 新規タイムアウトとして
alarm($TIMEOUT);
# タイムアウトを取り消す
alarm(0);

modperl2

$TIMEOUT = X;
# タイムアウトを取り消しタイムアウトを未設定とする
alarm(($TIMEOUT=0));

cgi

# 新規タイムアウトとして
alarm(X);

ラッパー

サブルーチン ep() を呼ぶ前に

$HTML::EmbeddedPerl::TIMEOUT = X;

予約済み

これは単純に cgi-modperl 間の互換性を解決しています。

サブルーチン

CGIでの利用のために。 他のサブルーチンの定義は自由です。

header_out
content_type
print
flush

modperl下の実行においては Apache::RequestRec 等に依存します。

変数

$TIMEOUT(グローバル)
$epl
$var

作者

トゥインクル・コンピューティング <twinkle@cpan.org>

ライセンス

Copyright (c) 2010 Twinkle Computing All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.