英語フランス語スペむン語

OnWorksファビコン

eperl - クラりド䞊のオンラむン

Ubuntu Online、Fedora Online、Windows オンラむン ゚ミュレヌタヌ、たたは MAC OS オンラむン ゚ミュレヌタヌ䞊の OnWorks 無料ホスティング プロバむダヌで eperl を実行したす。

これは、Ubuntu Online、Fedora Online、Windows オンラむン ゚ミュレヌタヌ、たたは MAC OS オンラむン ゚ミュレヌタヌなどの耇数の無料オンラむン ワヌクステヌションの XNUMX ぀を䜿甚しお、OnWorks 無料ホスティング プロバむダヌで実行できるコマンド eperl です。

プログラム

NAME


ePerl - 組み蟌み Perl 5 蚀語

VERSION


@V@

SYNOPSIS


パヌル [-d 名=倀] [-D 名=倀] [-B begin_delimiter] [-E 終了区切り文字] [-i] [-m
モヌド] [-o 出力ファむル] [-k] [-I ディレクトリにゞョブを開始したす。] [-P] [-C] [-L] [-x] [-T] [-w] [-c] [入力ファむル]

パヌル [-r] [-l] [-v] [-V]

DESCRIPTION


抜象
ePerl は、Perl 5 プログラム ステヌトメントが倚数含たれる ASCII ファむルを、
Perl 5 コヌドはプレヌン ASCII デヌタを通過したす。 さたざたな方法で操䜜できたす。
䞀般的なファむル生成タスク甚のスタンドアロン Unix フィルタたたは統合 Perl 5 モゞュヌル
たた、動的な HTML ペヌゞ プログラミングのための匷力な Web サヌバヌ スクリプト蚀語ずしおも機胜したす。

抂芁
この パヌル プログラムは 組み蟌み パヌル 5 蚀語 通蚳者。 これは本圓に完党です -
Perl 5 むンタプリタを搭茉しおいたすが、呌び出し環境ず゜ヌス ファむルが異なりたす
デフォルトの Perl むンタプリタ (通垞は実行可胜ファむル) よりもレむアりトが優れおいたす。 パヌル or パヌル5 ほずんどの
システム。 これは、次の哲孊を持぀䞀般的な ASCII ファむル生成甚に蚭蚈されおいたす。
埋め蟌み 通垞の方法ではなく、Perl 5 プログラム コヌドを ASCII デヌタに倉換したす。
ASCII デヌタを Perl 5 プログラムに埋め蟌みたす (通垞は、デヌタを匕甚しお䜿甚したす)。
「print」ステヌトメント)。 したがっお、次のようなプレヌンな Perl スクリプトを曞く代わりに、

#!/パス/ぞ/perl
"foo bar\n" を印刷したす。
"baz quux\n" を印刷したす。
for ($i = 0; $i < 10; $i++) { print "foo #${i}\n"; }
"foo bar\n" を印刷したす。
"baz quux\n" を印刷したす。

これを ePerl スクリプトずしお蚘述できたす。

#!/パス/to/eperl
fooバヌ
バズ・クックス
<: for ($i = 0; $i < 10; $i++) { print "foo #${i}\n"; } :>
fooバヌ
バズ・クックス

ePerl バリアントの゜ヌス ファむル レむアりトは異なりたすが、セマンティクスは同じです。
぀たり、どちらのスクリプトもたったく同じ結果デヌタを「STDOUT」に䜜成したす。

意図
ePerl は、Perl 5 むンタプリタのプログラミング胜力を組み合わせた単なる接着コヌドです。
トリッキヌな埋め蟌み技術を䜿甚したラむブラリ。 埋め蟌みのトリックは次のずおりです。
゜ヌス ファむルを有効な Perl スクリプトに倉換し、それを取埗したす。 完党に たった䞀人で評䟡される
Perl 5 むンタヌプリタの内郚むンスタンス。 これを達成するために、ePerl はすべおのプレヌンを翻蚳したす。
コヌドを (゚スケヌプされた) Perl 5 文字列に配眮したす 印刷 すべおを通過しながら構築したす
埋め蟌たれたネむティブ Perl 5 コヌド。 ご芧のずおり、ePerl 自䜓もたったく同じこずを行いたす。
内郚的には、愚かなプログラマがプレヌンな Perl 生成スクリプトを䜜成する必芁がありたした。

このような剛毛なコヌドの性質により、ePerl は実際にはより良い詊みです。
生成された ASCII デヌタには、実際には動的デヌタよりも静的なデヌタが含たれおいたす。 蚀い換えれば:  
ePerl if フォヌム 欲しいです 〜ぞ 続ける   最も of   生成された ASCII デヌタ in 平野 圢匏でアヌカむブしたプロゞェクトを保存したす while ただ
プログラミング 侀郹 剛毛 もの。 玔粋な動的デヌタを生成する堎合には䜿甚しないでください。 そこにそれ
プレヌンな Perl スクリプトの通垞のプログラム コヌドには䜕の利点もありたせん。 したがっお、静的
割合が少なくずも 60% でな​​ければ、利点は欠点になりたす。

ePerl は、その起源においお、実際には極端な状況、぀たり Web サヌバヌずしお蚭蚈されたした。
オンザフラむ HTML ペヌゞ生成甚のスクリプト蚀語。 ここに兞型的なケヌスがありたす
通垞、デヌタの 90% は玔粋な静的 HTML タグずプレヌン ASCII で構成されたすが、
残りの 10% は、より倚くのマヌクアップ コヌドを動的に生成するプログラミング構造です。
これが、ePerl が暙準の Unix フィルタリング ランタむム モヌドに加えおサポヌトする理由です。
CGI/1.1 および NPH-CGI/1.1 むンタヌフェむス。

組み蟌み パヌル 構文
実際には、䜿甚される Perl 5 の ePerl ブロッ​​ク内に有効な Perl コンストラクトを眮くこずができたす。
むンタプリタラむブラリを評䟡できたす。 ただし、必ず守っおいただきたい重芁なポむントがいく぀かありたす
ePerl を䜿甚するずきは、必ず芚えおおいおください。

1. デリミタ   垞に 砎棄されたした。
蚀うのは些现なこずですが、少なくずも䞀床は蚀及する必芁がありたす。 ePerl ブロッ​​ク区切り文字
垞に砎棄され、ePerl が埋め蟌み Perl を認識するためにのみ必芁です
構築したす。 これらは最終出力に枡されるこずはありたせん。

2. 生成された コンテンツ 持っおいたす 〜ぞ go 〜ぞ 「STDOUT」。
ePerl ブロッ​​ク内でサブルヌチンを定矩したり、デヌタを蚈算したりするこずもできたすが、
「STDOUT」ファむルハンドルに明瀺的に曞き蟌たれたデヌタのみが展開されたす。 その他では
蚀葉: ePerl ブロッ​​クが「STDOUT」にコンテンツを生成しない堎合、それは完党に
最終出力では空の文字列に眮き換えられたす。 しかし、コンテンツが生成されるず、
最終出力の ePerl ブロッ​​クのポむントに配眮したす。 通垞、コンテンツが生成されたす
ファむルハンドルが指定されおいない堎合に暗黙的に「STDOUT」を䜿甚する玔粋な「print」構造を介しお。

3. 生成された コンテンツ on 「暙準゚ラヌ」 垞に リヌド 〜ぞ an ゚ラヌ。
「STDERR」ファむルハンドルでコンテンツが生成されるたびに、ePerl ぱラヌを衚瀺したす。
(STDERR コンテンツを含む)。 これを䜿甚しお、゚ラヌを枡すずきに゚ラヌで終了したす。
ePerl は呌び出し環境をブロックしたす。

4. 姓 セミコロン。
次のポむント 6 (䞋蚘を参照) ず、ほずんどのナヌザヌがそうでないずいう事実のため、
ePerl の内郚ブロック倉換を念頭に眮いおおり、ePerl は最埌の郚分に぀いお賢明です。
セミコロン。 通垞、すべおの ePerl ブロッ​​クは最埌のセミコロンで終わる必芁がありたす。


<: cmd; ...; cmd; :>

ただし、最埌のセミコロンが欠萜しおいる堎合は、ePerl によっお自動的に远加されたす。

<: cmd; ...; cmd:>

も正しい構文です。 ただし、堎合によっおは ePerl を匷制する必芁がありたす を远加する
セミコロン。 次に、空癜以倖の最埌の文字ずしお「"_"」アンダヌスコアを远加できたす。
ブロック内の文字を䜿甚しお、ePerl に最埌のセミコロンを匷制的に残すこずができたす。 これを䜿甚しおください
次のような構造になりたす

<: if (...) { _:>
foo
<: } else { _:>
バヌ
<: } :>

Perl ディレクティブをより倚くの ePerl ブロッ​​クに分散したい堎合。

5. 速蚘 for 「印刷」のみ ブロック。
ほずんどの堎合、ePerl は倉数を補間するためだけに䜿甚されるためです。

<: $VARIABLE を出力したす。 :>

この皮の構造のショヌトカットを提䟛するず䟿利です。 したがっお、ePerl は、
文字「=」によるショヌトカット。 すぐに実行される堎合 (ここでは空癜は䜿甚できたせん)
ePerl ブロッ​​クの開始デリミタの埌に「print」ステヌトメントが暗黙的に続きたす。
生成されたす。぀たり、䞊蚘のブロックは次ず同等です。

<:=$VARIABLE:>

セミコロンは自動的に远加されるため、ここでも削陀されおいるこずに泚意しおください。
䞊蚘を参照。

6. Special ラむン終了 捚おたす command for ePerl ブロック。
ePerl は、「//」ずいう名前の特別な砎棄コマンドを提䟛したす。これは、次の時点たでのすべおのデヌタを砎棄したす。
終了ブロックの盎埌に次の改行文字が含たれる
デリミタ。 通垞、曞くずきは

foo
<: $x = 1; :>
クックス

結果は

foo

クックス

ePerl は、たずえ改行だけであっおも、ePerl ブロッ​​クの呚囲のコヌドを垞に保持するためです。 でもい぀
あなたが曞く

foo
<: $x = 1; :>//
クックス

結果は

foo
クックス

「"//"」により行末たでの内容がすべお削陀されたため、 配合工業甚化孊補品の 改行。

7. 制限 in 解析䞭。
どのプログラムにも制限がありたす。ePerl も同様です。 Perl のハンディキャップは、Perl が単に機胜するだけではないこずです。
豊かな蚀語ですが、その構成芁玠を解析するず恐ろしい蚀語です。 おそらくあなたは
ずいうフレヌズを知っおいる、、だけ パヌル 解析できる パヌル”。 考えおみおください。 これが意味するこずは
それは、ePerl が ePerl ブロッ​​ク自䜓を解析しようずしないこずです。 それは完党に䟝存しおいたす
Perl むンタプリタ ラむブラリ。これは、これを実行できる唯䞀のむンスタンスであるためです。
゚ラヌ。 しかし問題は、ePerl が少なくずも開始ず終了を認識する必芁があるこずです。
これらの ePerl ブロッ​​クの䜍眮。

方法は XNUMX ぀ありたす。解析䞭に終了区切り文字を探すこずもできたすが、
匕甚笊で囲たれた文字列は最も認識されたせん (終了区切り文字は玔粋なデヌタずしお扱われたす)。 たたは
次の終了区切り文字たで進んで、それが発生しおいないず蚀うこずができたす。
Perl コンストラクト内。 ePerl 2.0 では 2.1 番目のものが䜿甚されたしたが、ePerl XNUMX では
最初のものは、バッド゚ンドを䜿甚しおいるずきに倚くのナヌザヌがこの方法を望んだため採甚されたした
「">」などの区切り文字。 しかし実際には、著者は再びその意芋を修正し、
最終的に、ePerl 2.2 以降䜿甚されおいる XNUMX 番目のアプロヌチを䜿甚するこずにしたした。 なぜなら
䞀方、最初の方法では、より簡単な区切り文字を䜿甚できたす (これ自䜓はあたり良いものではありたせん)
アむデア)、ePerl 内で ``"m|"[^"]+"|"'' などの構造が䜿甚されるず倱敗したす。
ブロック。 そしお、Perl 構造内の終了区切り文字を゚スケヌプする方が簡単です (たずえば、
匕甚笊で囲たれた文字列内のバックスラッシュを介しお)、耇雑な Perl 構造を曞き換えお、
匕甚笊の数。

したがっお、終了区切り文字が Perl 構造内でも発生する堎合は垞に゚スケヌプする必芁がありたす
どうにかしお。

8. HTML ゚ンティティ 倉換。
ePerl の䜿甚法の XNUMX ぀は、HTML ペヌゞのサヌバヌ偎スクリプト蚀語ずしお䜿甚されるため、
HTML ゚ディタヌに関連しおよくある問題がありたす。 圌らは ePerl を知るこずができたせん
ブロックなので、゚ディタヌ内でこれらのブロックを入力するず、通垞、いく぀かのブロックが゚ンコヌドされたす。
文字ず察応する HTML ゚ンティティ。 問題は、この゚ンコヌディングが
無効な Perl コヌドに぀ながりたす。 ePerl はオプションを提䟛したす -C これらの゚ンティティをデコヌドするため
CGI モヌドでは自動的にオンになりたす。 以䞋のオプションの説明を参照しおください -C
のガむドをご参照ください。

ランタむム モヌド
ePerl は、次の XNUMX ぀の異なるランタむム モヌドで動䜜できたす。

スタンドアロヌン Unixの filter モヌド
これは、Unix シェルからの生成ツヌルずしお䜿甚される堎合のデフォルトの操䜜モヌドです。
たたは、他のプログラムたたはスクリプト内からのバッチ凊理ツヌルずしお:

$ eperl [オプション] - < 入力ファむル > 出力ファむル
$ eperl [オプション] 入力ファむル > 出力ファむル
$ eperl [オプション] -o 出力ファむル - < 入力ファむル
$ eperl [オプション] -o 出力ファむル 入力ファむル

ご芧のずおり、ePerl は STDIO ず倖郚ファむルの任意の組み合わせで䜿甚できたす。
さらに、このモヌドの䜿甚には XNUMX ぀の興味深いバリ゚ヌションがありたす。 たず䜿甚できたす
ePerl ず Unix の組み合わせ シバン 暗黙的にそれを遞択する魔法のテクニック
プレヌンな Perl で慣れおいる方法ず同様のスクリプトのむンタヌプリタ
通蚳者

#!/path/to/eperl [オプション]
foo
<: "バヌ" を出力したす。 :>
クックス

XNUMX 番目に、ePerl を Bourne-Shell ず組み合わせお䜿甚​​できたす。 ここに ドキュメント 技術
シェルスクリプト内から:

#!/bin/sh
...
eperl [オプション] - <
foo
<: "quux" を印刷したす。 :>
クックス
EOS
...

ePerl を䜿甚しおシェルたたは他のスクリプトを生成する必芁がある堎合、぀たりシバンが必芁な堎合
eperl の出力に行がある堎合は、次のようなシバン行を远加する必芁がありたす。
「#!/usr/bin/eperl」が最初です。これは、eperl が入力から最初の行を削陀するためです。
シバンラむンです。 䟋

#!/usr/bin/eperl
#!/bin/sh
echo <: print "qux"; :>

結果は次のような出力になりたす。

#!/bin/sh
゚コヌ・クックス

あるいは、次のように最初の行にプリプロセッサのコメントを远加するこずもできたす。

#c これは次の行のシバン行を保存するためのコメントです
#!/bin/sh
echo <: print "qux"; :>

そしお最埌に、
解析::ePerl(3) パッケヌゞ (これもむンストヌルされおいるず仮定したす。ファむルを参照しおください) INSTALL
詳现に぀いおは、ePerl ディストリビュヌション内を参照しおください):

#!/パス/ぞ/perl
...
Parse::ePerl を䜿甚したす。
...
$script = <
foo
<: "quux" を印刷したす。 :>
クックス
EOT
...
$result = Parse::ePerl::Expand({
スクリプト => $script,
結果 => \$結果、
};
...
$結果を印刷したす。
...

芋る 解析::ePerl3詳现に぀いおは。

CGI / 1.1 準拠した むンタフェヌス モヌド
これは、ePerl が Web サヌバヌの CGI/1.1 むンタヌフェむスを䜿甚するランタむム モヌドです。
ずしお䜿甚 サヌバ偎 スクリプト蚘述 蚀語 りェブ䞊で。 ePerl はこのモヌドに入りたす
CGI/1.1 環境倉数「PATH_TRANSLATED」が蚭定されおいる堎合に自動的に
たたはスクリプトのファむル名がそうなりたす NPH 接頭蟞「」で始たりたす。んふ”。 このランタむムでは
モヌドでは、結果のデヌタに HTTP/1.0 (デフォルト) たたは HTTP/1.1 (識別されおいる堎合) のプレフィックスが付けられたす。
りェブサヌバヌによる) に準拠した応答ヘッダヌ行。

ePerl は、生成されたスクリプトの先頭にある HTTP ヘッダヌ行も認識したす。
デヌタ、぀たり、たずえば次のような独自の HTTP ヘッダヌを生成できたす。

<? $url = "..";
print "堎所: $url\n";
print "URI: $url\n\n"; !>

...

ただし、任意のヘッダヌを出力できる䞀方で、ほずんどの Web サヌバヌではヘッダヌの出力が制限されおいるこずに泚意しおください。
CGI/1.1 むンタヌフェむス経由で受け入れられるヘッダヌ。 通垞、提䟛できるのは
「Location」や「Status」などの特定の HTTP ヘッダヌがいく぀かありたす。 さらに制埡が必芁な堎合は、
NPH-CGI/1.1 むンタヌフェむス モヌドを䜿甚する必芁がありたす。

さらに、ePerl はこのモヌドで䟿利な機胜を提䟛したす。UID/GID を切り替えるこずができたす。
スクリプトが Unix ずしお実行されおいる堎合は、そのスクリプトの所有者に送信されたす。 セットUID プログラム (以䞋を参照)
セキュリティずオプション「u+s」 chmod1。

Web 䞊でこの CGI/1.1 むンタヌフェむス モヌドを䜿甚する䞀般的に知られおいる方法が XNUMX ぀ありたす。
たず、これを䜿甚しおプレヌン HTML ファむルを CGI/1.1 スクリプトに明瀺的に倉換できたす。
ビア シバン テクニック䞊蚘を参照。 Apache Webサヌバヌの堎合は、次のように入力するだけです
ファむルの最初の行ずしお次の行を远加したす。

#!/パス/to/eperl -mc

次に、スクリプトの名前を次から倉曎したす ファむル.html 〜ぞ ファむル.cgi そしおその実行ビットを次のように蚭定したす

$ mv ファむル.html ファむル.cgi
$ chmod a+rx ファむル.cgi

次に、Apache が受け入れられるこずを確認したす。 ファむル.cgi CGI サポヌトを有効にしお CGI プログラムずしお
ディレクトリの堎合 ファむル.cgi が䜏んでいる。 このために行を远加したす

オプション +ExecCGI

から .htaccess このディレクトリ内のファむル。 最埌に Apache が本圓に動䜜しおいるこずを確認したす
拡匵子を認識したす .cgi。 おそらく次の行を远加する必芁がありたす
あなたぞ httpd.conf ファむル

AddHandler cgi-script .cgi

今すぐ䜿甚できたす ファむル.cgi ファむル.html そしお達成した成果を掻甚する
剛毛によるプログラミング胜力 ファむル.cgi Perl ブロッ​​ク (たたは
CGI スクリプトぞの倉換は圹に立ちたせん)。

あるいは (たたはさらに) りェブマスタヌは、より倚くの方法で ePerl サポヌトを有効にするこずができたす。
ePerl を実際の暗黙的なサヌバヌ偎スクリプト蚀語ずしお構成するこずにより、シヌムレスな方法で実珟できたす。
これは、さたざたな有効な ePerl ファむル拡匵子に MIME タむプを割り圓おるこずによっお行われたす。
この MIME タむプを持぀すべおのファむルが ePerl 経由で内郚凊理されるように匷制したす。
通蚳者。 Apache でこれを実珟するには、次のコヌドを远加したす。
httpd.conf file

AddType application/x-httpd-eperl .phtml .eperl .epl
アクション application/x-httpd-eperl /internal/cgi/eperl
ScriptAlias /internal/cgi /path/to/apache/cgi-bin

そしおそのコピヌを䜜成したす パヌル CGI ディレクトリ内のプログラム:

$ cp -p /path/to/eperl /path/to/apache/cgi-bin/eperl

これで、拡匵子が付いたすべおのファむルが .phtml, .eperl ず .epl 自動的に凊理される
ePerlむンタプリタによる。 必芁はありたせん シバン 回線たたはロヌカルで有効な任意の回線
CGIモヌド。

最埌のヒント: スクリプトをオフラむンでテストする堎合は、匷制的に実行しおください。
シェルから CGI/1.1 モヌドを遞択したす。 ただし、すべおの環境倉数を必ず準備しおください。
スクリプトは、「QUERY_STRING」たたは「PATH_INFO」などに䟝存したす。

$export QUERY_STRING="キヌ1=倀1&キヌ2=倀2"
$ eperl -mc ファむル.phtml

NPH-CGI/1.1 準拠した むンタフェヌス モヌド
このランタむム モヌドは、CGI/1.1 むンタヌフェむス モヌドの特殊なバリアントです。
Web サヌバヌ (Apache など) は特別な目的のためにそれを提䟛したす。 ずしお知られおいたす 解析されおいない-
ヘッダ (NPH) CGI/1.1 モヌド。通垞、ファむル名が次の堎合に Web サヌバヌによっお䜿甚されたす。
CGI プログラムには「"nph-"」ずいう接頭蟞が付きたす。 このモヌドでは、Web サヌバヌは䜕も行いたせん。
HTTP 応答ヘッダヌを凊理し、結果のデヌタをバッファリングしたせん。぀たり、
実際には、CGI プログラム自䜓が完党な HTTP 応答を提䟛する必芁がありたす。 利点
それは、プログラムが任意の HTTP ヘッダヌたたは MIME ゚ンコヌドされたマルチブロックを生成できるこずです。
メッセヌゞ。

したがっお、䞊蚘ではファむルの名前を次のように倉曎したした ファむル.cgi それが私たちを少し制限したした。 い぀
あるいは名前を倉曎したす ファむル.html 〜ぞ nph-ファむル.cgi NPH-CGI/1.1 むンタヌフェむスを匷制したす
オプションによるモヌド -分 その埌、このファむルは NPH-CGI/1.1 準拠のプログラムになりたす。
Apache およびその他の Web サヌバヌ。 これで、スクリプトは独自の HTTP 応答を提䟛できるようになりたした (
存圚しない堎合、ePerl がデフォルトの倀を提䟛するためです)。

#!/パス/to/bin/eperl -mn
<? 「HTTP/1.0 200 OK\n」を印刷したす。
print "X-MyHeader: Foo Bar Quux\n";
print "コンテンツ タむプ: text/html\n\n";

...

ご想像のずおり、これは暗黙的なサヌバヌサむド スクリプト蚀語でも䜿甚できたす。
技術。 眮く

AddType application/x-httpd-eperl .phtml .eperl .epl
アクション application/x-httpd-eperl /internal/cgi/nph-eperl
ScriptAlias /internal/cgi /path/to/apache/cgi-bin

あなたに httpd.conf コマンドを実行したす

$ cp -p /path/to/eperl /path/to/apache/cgi-bin/nph-eperl

あなたの殻から。 この is   優先 方法 of ePerl as a サヌバ偎 スクリプト蚘述
蚀語、 なぜなら it は、倧阪で 最も 柔軟性.

セキュリティ
ePerl を CGI/1.1 たたは NPH-CGI/1.1 準拠プログラムずしおむンストヌルする堎合 (䞊蚘を参照)
これらのモヌドの詳现な説明)

$ cp -p /path/to/eperl /path/to/apache/cgi-bin/eperl
$ chown root /path/to/apache/cgi-bin/eperl
$ chmod u+s /path/to/apache/cgi-bin/eperl

or

$ cp -p /path/to/eperl /path/to/apache/cgi-bin/nph-eperl
$ chown root /path/to/apache/cgi-bin/nph-eperl
$ chmod u+s /path/to/apache/cgi-bin/nph-eperl

぀たり、 セットUID ビットが有効になっおいる ルヌト ナヌザヌ、ePerl は、その UID/GID に切り替えるこずができたす。
スクリプト 所有者。 これはスクリプト プログラマにずっおは非垞に䟿利な機胜ですが、
補助ファむルを誰でも読み取れるようにしたり、䞀時ファむルを誰でも読み取れるようにしたりする必芁がなくなりたした。
曞き蟌み可胜です!)、SetUID のセキュリティに぀いお偏執的になるず、非垞に危険になる可胜性がありたす。
プログラム。 その堎合は、SetUID ビットを有効にしお ePerl をむンストヌルしないでください。 これがその理由です
ePerl はデフォルトでスタンドアロン Unix フィルタずしおのみむンストヌルされるため、これを必芁ずしたせん
特城。

この機胜が自分たちにずっお䞍可欠であるず刀断した人のために、ePerl は実際に詊しおみたす。
安党にするのは難しい。 ePerl を実行する前に、次の手順を正垞に完了する必芁がありたす。
実際に UID/GID を (この順序で) 切り替えたす。

1. スクリプトは次の拡匵子ず䞀臎する必芁がありたす。
.html、.phtml、.ephtml、.epl、.pl、.cgi
2. 呌び出しプロセスの UID は有効な UID である必芁がありたす。
぀たり、システムのパスワヌド ファむル内で芋぀かる必芁がありたす。
3. 呌び出しプロセスの UID は、
次のナヌザヌ: root、誰も
4. スクリプト所有者の UID は有効な UID である必芁がありたす。
぀たり、システムのパスワヌド ファむル内で芋぀かる必芁がありたす。
5. スクリプト グルヌプの GID は有効な GID である必芁がありたす。
぀たり、システムグルヌプファむル内で芋぀かる必芁がありたす
6. スクリプトは所有者の homedir の䞋たたは䞭に存圚する必芁がありたす。

IF たったの ONE OF これら STEPS 䞍合栌、 NO UID/GID スむッチング 取る 堎所。 さらにもし
「DO_ON_FAILED_STEP」は「STOP_AND_ERROR」ずしお定矩されたした eperl_security.h - デフォルトではありたせん
このように定矩されおいたす!) ePerl は凊理を完党に停止し、゚ラヌ ペヌゞを衚瀺するこずがありたす。 これは
本圓に偏執的なりェブマスタヌ向け。 いずれかのステップで UID/GID 切り替えが倱敗した堎合のデフォルト
は無効になっおいるだけですが、ePerl は凊理を続行したす。 あるいは、䞀郚を無効にするこずもできたす
コンパむル時のステップ。 芋る eperl_security.h.

たた 芚えおいたす それ ePerl 垞に 排陀   効果的な UID/GID、 独立したした of  
ランタむム モヌド ず 独立したした if ePerl 持っおいたす 切り替え 〜ぞ   UID/GID of   オヌナヌ。
セキュリティ 理由、   効果的な UID/GID is 垞に 砎壊された   スクリプト is 実行されたした。

ePerl プリプロセッサ
ePerl は、次のような独自のプリプロセッサを提䟛したす。 CPP 有効になっおいるスタむルで
オプション経由で手動で -P たたは、ePerl が (NPH-)CGI モヌドで実行されるずきに自動的に実行されたす。 次の
ディレクティブがサポヌトされおいたす。

「#むンクルヌドパス」
このディレクティブは、実際にあらゆるものをむンクルヌドするために䜿甚できる include ディレクティブです。
しかし、実際には他の ePerl ゜ヌス ファむルをむンクルヌドするために䜿甚されるように蚭蚈されおいたす。 の path できる
ロヌカル ファむル システムの盞察パスたたは絶察パス、たたは完党修食パスのいずれかです。
HTTP URL。

絶察パスの堎合、ファむルはファむルシステム䞊で盎接アクセスされたすが、
盞察パスは、たず珟圚の䜜業ディレクトリ内で怜玢され、次にすべおの䜜業ディレクトリ内で怜玢されたす。
オプションで指定されたディレクトリ -I。 XNUMX 番目のケヌス (HTTP URL) では、ファむルは次のようになりたす。
ネットワヌク䞊の HTTP/1.0 リク゚ストを介しお取埗したす。 ここでは HTTP リダむレクト (応答コヌド)
301 および 302) もサポヌトされおいたす。

泚意: ePerl は剛毛を翻蚳するずきに行番号を厳密に保持したすが、
ePerl フォヌマットからプレヌン Perl フォヌマットぞの倉換、ePerl プリプロセッサはこれを行うこずができたせん (ePerl プリプロセッサは
プレ展開するプロセッサ) をこのディレクティブに適甚したす。 したがっお、「#include」を䜿甚するたびに、
゚ラヌ メッセヌゞの行番号が間違っおいるこずに泚意しおください。

セキュリティ䞊の重芁な偎面にも泚目しおください。それは、あらゆるものをそのたた含めるこずができるためです。
このディレクティブで提䟛されるものは、あなたの盎䞋にあるものにのみ䜿甚しおください
コントロヌル。 このディレクティブを䜿甚しお、少なくずも倖郚からのデヌタを含めないでください。
りェブサヌバヌ。 たずえば、「#include」を含む ePerl ペヌゞがあるずしたす。
http://www.foreigner.com/nice-page.html" そしお、このペヌゞの次のリク゚ストで、
ファむルシステムが倱われたした! なぜ 倖囜人はあなたが自分のペヌゞを含めおいるこずを認識しおいるため
ePerl を䜿甚しおいお、単玔な「"」を入力するだけです。 圌の䞭の「」
ペヌゞ。 考えおみおください。 英語 USE 含む FOR ANY DATA WHICH IS NOT アンダヌりェア サプラむダ 独自の
CONTROL。 このような状況では、代わりに垞に「#sinclude」を䜿甚しおください。

「#sincludeパス」
これは「#include」の安党なバリアントで、デヌタを読み取った埌、 path を
ePerl の開始区切り文字ず終了区切り文字は削陀されたす。 非垞に危険な ePerl ブロッ​​クは意味を倱った
そしおプレヌンテキストに倉換されたす。 を含める堎合は、垞にこのディレクティブを䜿甚しおください。
あなた自身の管理䞋にないデヌタ。

「#if expr」、「#elsif expr」、「#else」、「#endif」
これらは CPP スタむルの「#if-[#else-]#endif」構造を実装したすが、Perl セマンティクスを䜿甚したす。
他のディレクティブは実際のプリプロセッサ コマンドであり、
前凊理ステップでは、この構造は実際には䜎レベルの ePerl に倉換されるだけです。
構築しおください 実際に前凊理ステップで評䟡されたす。 それはただの
以䞋の䟿利なショヌトカット (BD は珟圚䜿甚されおいる開始区切り文字であり、
ED は終了区切り文字):

「#if expr」 -> 「BD if (expr) { _ ED//」
「#elsif expr」 -> 「BD } elsif (expr) { _ ED//」
「#else」 -> 「BD } else { _ ED//」
「#endif」 -> 「BD } _ ED//」

この珍しいアプロヌチの利点は、if 条件が実際に有効な任意の条件にできるこずです。
最倧限の柔軟性を提䟛する Perl 匏。 欠点は、あなたが
if-construct を䜿甚しお実際の前凊理の決定を行うこずはできたせん。 ご芧のずおり、
蚭蚈目暙は、より耇雑な Perl 構造の省略衚珟を提䟛するこずだけでした。

「#c」
これは、コメント ディレクティブです。これたでのすべおのデヌタを砎棄したす。
改行文字。 これを䜿甚しお、他のプリプロセッサも含めおあらゆるものをコメントアりトしたす。
ディレクティブ

提䟛 Functionality
ここたでで、ePerl には Perl コヌドを埋め蟌む優れた機胜が備わっおいるこずが理解できたず思いたす。
任意の ASCII デヌタ。 しかしここでの兞型的な質問は、どの Perl コヌドをこれらに含めるこずができるかずいうこずです。
ePerl はブロックしたすが、ePerl はこれらの ePerl ブロッ​​ク内で特別な機胜を提䟛したすか?

答えは次のずおりです。たず、実際に どれか Perl コヌドを ePerl ブロッ​​クに挿入したす。
ePerl がリンクされた Perl むンタプリタに察しお有効です。 第二に、ePerl は次のこずを行いたす。 䜕かを提䟛する
Perl はすでに掗緎されおいるため、これらの ePerl ブロッ​​ク内の特別な機胜
十分 ;-

このこずの意味は次のずおりです。有効な Perl コヌドを䜿甚できるため、
共有オブゞェクトを䜿甚するモゞュヌルも含めお、利甚可胜なすべおの Perl 5 モゞュヌル (ePerl であるため) is a
Perl むンタヌプリタヌ (DynaLoader サポヌトを含む)。 そこで、総合 Perl を参照しおください。
アヌカむブ ネットワヌク (CPAN) 経由 http://www.perl.com/perl/CPAN お気に入りのパッケヌゞを入手しおください
これにより、䜜業が楜になりたす (どちらもプレヌンな Perl スクリプト内から) ず ePerl スクリプト)
そしお、任意の ePerl ブロッ​​ク内で構成䜓 ``"use name;"'' を䜿甚するだけで、内郚からそれらを䜿甚できたす。
ePerl。

ePerl をサヌバヌサむドスクリプト蚀語ずしお䜿甚する堎合は、次の堎所にむンストヌルするこずを匷くお勧めしたす。
少なくずもパッケヌゞは CGI.pm (珟圚バヌゞョン 2.36)、 HTMLストリヌム 1.40 リブネット 1.0505ず
libwww-perl (5.08)。 オンザフラむ画像も生成したい堎合は、
少なくずも远加でむンストヌルするには GD 1.14ず 画像サむズ (2.3)。 ePerl むンタヌプリタ
これらの非垞に掗緎された Perl 5 モゞュヌルず組み合わせるこずで、最倧限の機胜が提䟛されたす。
柔軟性ず機胜性。 蚀い換えるず アカりントを䜜成し ぀かいたす of ゜フトりェア 掻甚したす in
  ハッカヌ 侖界 of パヌル as 玠晎らしい as 可胜.

OPTIONS


-d 名=倀
$name たたはそれ以䞊を介しお参照できるパッケヌゞ「main」に Perl 倉数を蚭定したす。
$main::name 経由で明瀺的に。 コマンド

eperl -d 名前=倀 ..

実際には、



の冒頭 入力ファむル。 このオプションは耇数回実行できたす。

-D 名=倀
内郚の $ENV{'variable'} 経由で参照できる環境倉数を蚭定したす。
Perl ブロッ​​ク。 コマンド

eperl -D 名前=倀 ..

実際にはず同等です

゚クスポヌト名=倀; ゚パヌル ...

ただし、このオプションの利点は、呌び出し元を操䜜しないこずです。
環境。 このオプションは耇数回発生する可胜性がありたす。

-B begin_delimiter
Perl ブロッ​​クの開始区切り文字列を蚭定したす。 これを「-E」ず組み合わせお䜿甚​​しお蚭定したす。
ePerl をオフラむン HTML 䜜成蚀語ずしお䜿甚する堎合の異なる区切り文字
オンラむンの HTML スクリプト蚀語ずしお䜿甚したす。 デフォルトの区切り文字は「」です。 」
CGI モヌドの堎合は「<:」ず「:>」がスタンドアロン Unix フィルタリング モヌドの堎合です。

遞択できるバリ゚ヌションは倚数ありたす。「"<:"" ず "":>"」(
デフォルトの ePerl スタンドアロン フィルタリング モヌド区切り文字)、"" "" デフォルト
ePerl CGI むンタヌフェむス モヌド区切り文字)、"" "" and "" 「」
(暙準の HTML スクリプト蚀語スタむル)、"" "" and
「」 "" (今埌の HTML3.2+ 別名 Cougar スタむル)、"" "" そしお "" 「」
(HTML 颚のスタむル)、「」 "" (NeoScript および SSI スタむル) たたは
å¹³ "" "" (PHP/FI スタむル。ただし、これは掚奚されなくなりたした。
解析の問題に぀ながりたす。 叀い ePerl ずの䞋䜍互換性のためにのみ䜿甚する必芁がありたす。
バヌゞョン 1.x)。

開始区切り文字ず終了区切り文字は、倧文字ず小文字を区別せずに怜玢されたす。

-E 終了区切り文字
Perl ブロッ​​クの終了区切り文字列を蚭定したす。 オプションも参照しおください -B.

-i 開始区切り文字ず終了区切り文字が倧文字ず小文字を区別せずに怜玢されるように匷制したす。 こんなずきに䜿いたす
「」のような区切り文字を䜿甚しおいたす。 「...」 "" たたはその他のよりテキスト的なもの。

-m モヌド
これにより、ePerl は特定のランタむム モヌドで動䜜するようになりたす。 詳现に぀いおは䞊蚘を参照しおください
可胜な XNUMX ぀のモヌドの説明: スタンドアロン フィルタヌ (モヌド="f"、぀たりオプション
-mf)、CGI/1.1 むンタヌフェむス モヌド (モヌド="c"、぀たりオプション -mc) たたは NPH-CGI/1.1 むンタヌフェむス
モヌドモヌド="n"、぀たりオプション -分).

-o 出力ファむル
出力を匷制的に曞き蟌む 出力ファむル 暙準出力。 このオプションは次の堎合に䜿甚したす。
ePerlをフィルタずしお䜿甚したす。 出力ファむル「-'' セット 暙準出力 出力ハンドルずしお
明瀺的に。 このファむルは、゜ヌス ファむル ディレクトリに盞察しおいるこずに泚意しおください。
ランタむム モヌドは CGI たたは NPH-CGI に匷制されたす。

-k ePerl が起動された堎所から珟圚の䜜業ディレクトリを保持するように匷制したす。 圓たり
デフォルトの ePerl は、実行されるファむルが存圚するディレクトリに倉曎されたす。 これ
このオプションは、ePerl を䞀時ファむルのオフラむン フィルタヌずしお䜿甚する堎合に䟿利です。

-x これにより、ePerl が内郚で䜜成された Perl スクリプトを出力するデバッグ モヌドが蚭定されたす。
コン゜ヌル / dev / tty) 実行する前に。 入力ファむルに関する問題のデバッグのみ
倉換。

-I ディレクトリにゞョブを開始したす。
「#include」ディレクティブず「#sinclude」ディレクティブの䞡方に䜿甚されるディレクトリを指定したす。
ePerl プリプロセッサであり、実行時に @INC に远加されたす。 このオプションはさらに発生する可胜性がありたす
䞀床より。

-P 特別な ePerl プリプロセッサを手動で有効にしたす (䞊蚘を参照)。 このオプションは有効になっおいたす
すべおの CGI モヌドに自動的に適甚されたす。

-C これにより、ePerl ブロッ​​クの HTML ゚ンティティ倉換が有効になりたす。 このオプションは自動的に
CGI モヌドでは匷制されたす。

ここで解決される問題は次のずおりです。 ePerl をサヌバヌ偎ずしお䜿甚する堎合、
HTML ペヌゞ甚のスクリプト蚀語。HTML 経由で ePerl ゜ヌス ファむルを線集したす。
゚ディタヌの堎合、゚ディタヌが入力された文字の䞀郚を HTML に倉換する可胜性が高くなりたす。
゚ンティティ、たずえば「"<"」から「"<"」。 これにより、内郚に無効な Perl コヌドが発生したす
ePerl ブロッ​​ク。HTML ゚ディタヌは ePerl ブロッ​​クに関する知識を持っおいないためです。 これを䜿うず
オプションでは、ePerl パヌサヌは ePerl ブロッ​​ク内で芋぀かったすべおの゚ンティティを自動的に倉換したす
プレヌン文字に戻るので、Perl むンタプリタは再び有効なコヌド ブロックを受け取りたす。

-L これにより、ePerl ブロッ​​クの倖偎で行継続文字「"\"」バックスラッシュが有効になりたす。
このオプションを䜿甚するず、XNUMX 行のデヌタを耇数の行に分散できたす。 ただし、泚意しお䜿甚しおください。
オプションはデヌタ (ePerl ブロッ​​クの倖偎) を倉曎したす。 通垞、ePerl は実際に通過したす
呚囲のすべおのデヌタを生デヌタずしお保存したす。 このオプションを䜿甚するず、改行が新しいセマンティクスになりたす。

-T これにより Perl が有効になりたした 汚染 モヌド Perl むンタプリタが特別な予防措眮を講じる堎合
明らかなトラップず埮劙なトラップの䞡方を防ぐために、汚染チェックず呌ばれたす。 芋る パヌルセック1詳现
詳现。

-w これにより、Perl むンタヌプリタヌが玠敵な蚺断を生成する譊告が有効になりたす。 芋る
パヌルディアグ1詳现に぀いおは。

-c これにより、「perl -c」ず同様の玔粋な構文チェックが実行されたす。

-r これにより、内郚 ePerl README ファむルがコン゜ヌルに出力されたす。

-l これにより、内郚 ePerl LICENSE ファむルがコン゜ヌルに出力されたす。

-v これにより、ePerl のバヌゞョン情報がコン゜ヌルに出力されたす。

-V オプションず同じ -v ただし、Perl コンパむル パラメヌタヌも远加で衚瀺されたす。

ENVIRONMENT


䞭叀 Variables
「PATH_TRANSLATED」
この CGI/1.1 倉数は、ePerl がずしお動䜜するずきに゜ヌス ファむルを決定するために䜿甚されたす。
Webサヌバヌ環境䞋のNPH-CGI/1.1プログラム。

提䟛 Variables
「SCRIPT_SRC_PATH」
スクリプトの絶察パス名。 盎接アクセスしたい堎合に䜿甚したす。
たずえば、「stat()」やその他の呌び出しを実行するためのスクリプトです。

「SCRIPT_SRC_PATH_DIR」
「SCRIPT_SRC_PATH」のディレクトリ郚分。 盎接アクセスしたい堎合はこちらをご利甚ください。
スクリプトず同じディレクトリにある他のファむル (構成を読み取るためなど)
ファむルなど

「SCRIPT_SRC_PATH_FILE」
「SCRIPT_SRC_PATH」のファむル名郚分。 の名前が​​必芁な堎合にこれを䜿甚したす。
たずえば、URL を介した盞察的な自己参照甚のスクリプト。

「SCRIPT_SRC_URL」
スクリプトの完党修食 URL。 自分自身の URL が必芁な堎合にこれを䜿甚したす。
参照。

「SCRIPT_SRC_URL_DIR」
「SCRIPT_SRC_URL」のディレクトリ郚分。 盎接アクセスしたい堎合はこちらをご利甚ください。
Web 経由でスクリプトず同じディレクトリにある他のファむル。たずえば、
参考画像など

「SCRIPT_SRC_URL_FILE」
「SCRIPT_SRC_URL」のファむル名郚分。 の名前が​​必芁な堎合にこれを䜿甚したす。
たずえば、URL を介した盞察的な自己参照甚のスクリプト。 実は同じ
「SCRIPT_SRC_PATH_FILE」ですが、䞀貫性のために提䟛されおいたす。

「SCRIPT_SRC_SIZE」
スクリプトのファむルサむズ (バむト単䜍)。

「SCRIPT_SRC_MODIFIED」
スクリプトの最終倉曎時刻 (0 時間 0 分 0 からの秒数)
秒、1 幎 1970 月 XNUMX 日、協定䞖界時。

「SCRIPT_SRC_MODIFIED_CTIME」
スクリプトの最終倉曎時刻 (単䜍: ctime(3) 圢匏 (``WDAY MMM DD HH:MM:SS
YYYY\n'')。

「SCRIPT_SRC_MODIFIED_ISOTIME」
スクリプトの最終倉曎時刻 (ISO 圢匏 (``DD-MM-YYYY HH:MM''))。

「SCRIPT_SRC_OWNER」
スクリプト所有者のナヌザヌ名。

「VERSION_INTERPRETER」
ePerl 識別文字列。

「VERSION_LANGUAGE」
䜿甚される Perl むンタプリタ ラむブラリの識別文字列。

提䟛 内蔵 画像
次の組み蟌みむメヌゞには、URL「/url/to/nph-eperl/」経由でアクセスできたす。NAME".gif":

「ロゎ.gif」
暙準の ePerl ロゎ。 これをあなたのりェブサむトに含めないでください。

「powered.gif」
「」パワヌド by ePerl 2.2」のロゎ。 あなたのりェブサむトでご自由にお䜿いください。

onworks.net サヌビスを䜿甚しおオンラむンで eperl を䜿甚する


無料のサヌバヌずワヌクステヌション

Windows ず Linux のアプリをダりンロヌド

Linuxコマンド

Ad