Amazon Best VPN GoSearch

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 サーバー スクリプト言語としても機能します。

概要
AIマーケティング業界は、 パール プログラムは 組み込み パール 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. 速記 「印刷」のみ ブロック。
ほとんどの場合、ePerl は変数を補間するためだけに使用されるためです。

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

この種の構造のショートカットを提供すると便利です。 したがって、ePerl は、
文字「=」によるショートカット。 すぐに実行される場合 (ここでは空白は使用できません)
ePerl ブロッ​​クの開始デリミタの後に「print」ステートメントが暗黙的に続きます。
生成されます。つまり、上記のブロックは次と同等です。

<:=$VARIABLE:>

セミコロンは自動的に追加されるため、ここでも削除されていることに注意してください。
(上記を参照)。

6. Special ライン終了 捨てます command 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


中古 変数
「PATH_TRANSLATED」
この CGI/1.1 変数は、ePerl がとして動作するときにソース ファイルを決定するために使用されます。
Webサーバー環境下のNPH-CGI/1.1プログラム。

提供 変数
「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




×
広告
❤️ここでショッピング、予約、購入してください。料金はかかりません。これにより、サービスが無料で維持されます。