InggrisPerancisSpanyol

Ad


favorit OnWorks

eperl - Online di Cloud

Jalankan eperl di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows, atau emulator online MAC OS

Ini adalah perintah eperl yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


ePerl - Embedded Perl 5 Bahasa

VERSION


@V@

RINGKASAN


eperl [-d nama=nilai] [-D nama=nilai] [-B awal_pembatas] [-E akhir_pembatas] [-i] [-m
mode] [-o berkas keluaran] [-k] [-I direktori] [-P] [-C] [-L] [-x] [-T] [-w] [-c] [file masukan]

eperl [-r] [-l] [-v] [-V]

DESKRIPSI


Abstrak
ePerl menginterpretasikan file ASCII yang dilengkapi dengan pernyataan program Perl 5 dengan mengevaluasi:
Kode Perl 5 saat melewati data ASCII biasa. Itu dapat beroperasi dengan berbagai cara: Sebagai
filter Unix yang berdiri sendiri atau modul Perl 5 terintegrasi untuk tugas pembuatan file umum
dan sebagai bahasa scripting Webserver yang kuat untuk pemrograman halaman HTML dinamis.

Pengantar
Grafik eperl Program adalah Tertanam Perl 5 Bahasa penerjemah. Ini benar-benar penuh-
menampilkan penerjemah Perl 5, tetapi dengan lingkungan panggilan dan file sumber yang berbeda
tata letak daripada penerjemah Perl default (biasanya yang dapat dieksekusi perl or perl5 pada kebanyakan
sistem). Ini dirancang untuk pembuatan file ASCII umum dengan filosofi:
embedding kode program Perl 5 ke dalam data ASCII alih-alih cara biasa di mana Anda
menyematkan data ASCII ke dalam program Perl 5 (biasanya dengan mengutip data dan menggunakannya melalui
pernyataan "cetak"). Jadi, alih-alih menulis skrip Perl biasa seperti

#!/path/ke/perl
print "bilah foo\n";
print "baz quux\n";
for ($i = 0; $i < 10; $i++) { print "foo #${i}\n"; }
print "bilah foo\n";
print "baz quux\n";

anda dapat menulisnya sekarang sebagai skrip ePerl:

#!/jalur/ke/eperl
bar makanan
baz qux
<: for ($i = 0; $i < 10; $i++) { print "foo #${i}\n"; } :>
bar makanan
baz qux

Meskipun varian ePerl memiliki tata letak file sumber yang berbeda, semantiknya sama,
yaitu kedua skrip membuat data yang dihasilkan persis sama pada "STDOUT".

Niat
ePerl hanyalah kode lem yang menggabungkan kekuatan pemrograman penerjemah Perl 5
perpustakaan dengan teknik embedding yang rumit. Trik penyematan adalah ini: ini mengubah
file sumber menjadi skrip Perl yang valid yang kemudian mendapat sepenuhnya dinilai hanya oleh satu
contoh internal dari penerjemah Perl 5. Untuk mencapai ini, ePerl menerjemahkan semua sederhana
kode ke (lolos) Perl 5 string ditempatkan ke dalam mencetak konstruksi saat melewati semua
tertanam kode Perl 5 asli. Seperti yang Anda lihat, ePerl sendiri melakukan hal yang sama
secara internal, seorang programmer konyol harus melakukannya ketika menulis skrip generasi Perl biasa.

Karena sifat kode kasar seperti itu, ePerl benar-benar merupakan upaya yang lebih baik ketika
data ASCII yang dihasilkan berisi benar-benar lebih statis sebagai data dinamis. Atau dengan kata lain: penggunaan
ePerl if kamu ingin untuk menjaga itu paling of itu dihasilkan ASCII data in polos format sementara hanya
pemrograman beberapa bristled barang. Jangan gunakan saat membuat data dinamis murni. Itu dia
tidak membawa keuntungan pada kode program biasa dari skrip Perl biasa. Jadi, statis
bagian harus setidaknya 60% atau keuntungan menjadi kerugian.

ePerl pada awalnya sebenarnya dirancang untuk situasi ekstrem: sebagai server web
bahasa skrip untuk pembuatan halaman HTML on-the-fly. Di sini Anda memiliki kasus khas
bahwa biasanya 90% dari data terdiri dari tag HTML statis murni dan ASCII biasa sementara hanya
10% sisanya adalah konstruksi pemrograman yang secara dinamis menghasilkan lebih banyak kode markup.
Inilah alasan mengapa ePerl selain mode runtime penyaringan Unix standarnya juga mendukung
antarmuka CGI/1.1 dan NPH-CGI/1.1.

Tertanam Perl Sintaksis
Secara praktis Anda dapat meletakkan konstruksi Perl yang valid di dalam blok ePerl dari Perl 5 yang digunakan
perpustakaan juru bahasa dapat mengevaluasi. Tapi ada beberapa poin penting yang harus selalu kamu lakukan
ingat dan jangan pernah lupa saat menggunakan ePerl:

1. Pembatas adalah selalu dibuang.
Sepele untuk dikatakan, tetapi harus disebutkan setidaknya sekali. Pembatas blok ePerl
selalu dibuang dan hanya diperlukan untuk ePerl untuk mengenali Perl . yang disematkan
konstruksi. Mereka tidak pernah diteruskan ke hasil akhir.

2. Dihasilkan Konten memiliki untuk go untuk "STDOUT".
Meskipun Anda dapat mendefinisikan subrutin, menghitung beberapa data, dll. di dalam blok ePerl
hanya data yang secara eksplisit ditulis ke filehandle "STDOUT" yang diperluas. Di lain
kata-kata: Ketika blok ePerl tidak menghasilkan konten di "STDOUT", itu sepenuhnya
digantikan oleh string kosong di hasil akhir. Tetapi ketika konten dibuat, itu adalah
letakkan di titik blok ePerl di hasil akhir. Biasanya konten dihasilkan
melalui konstruksi "cetak" murni yang secara implisit menggunakan "STDOUT" ketika tidak ada penanganan file yang diberikan.

3. Dihasilkan Konten on "STDERR" selalu mengarah untuk an kesalahan.
Setiap kali konten dibuat di filehandle "STDERR", ePerl menampilkan kesalahan
(termasuk konten STDERR). Gunakan ini untuk keluar dari kesalahan saat meneruskan kesalahan dari
ePerl memblokir ke lingkungan panggilan.

4. Terakhir titik koma.
Karena poin 6 berikut (lihat di bawah) dan fakta bahwa sebagian besar pengguna tidak
pertimbangkan terjemahan blok ePerl internal, ePerl pintar tentang yang terakhir
titik koma. Biasanya setiap blok ePerl harus diakhiri dengan titik koma yang terakhir
perintah.

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

Tetapi ketika titik koma terakhir hilang maka secara otomatis ditambahkan oleh ePerl, yaitu

<: cmd; ...; cmd :>

juga sintaks yang benar. Tetapi terkadang perlu untuk memaksa ePerl tidak untuk menambahkan
titik koma. Kemudian Anda dapat menambahkan ``"_"'' (garis bawah) sebagai non-spasi terakhir
karakter di blok untuk memaksa ePerl meninggalkan titik koma terakhir. Gunakan ini untuk
konstruksi seperti berikut

<: jika (...) { _:>
foo
<: } else { _:>
bar
<: } :>

di mana Anda ingin menyebarkan arahan Perl ke lebih banyak blok ePerl.

5. Steno untuk "cetak"-saja blok.
Karena sebagian besar waktu ePerl digunakan hanya untuk menginterpolasi variabel, mis

<: cetak $VARIABEL; :>

berguna untuk menyediakan jalan pintas untuk konstruksi semacam ini. Jadi ePerl menyediakan
pintasan melalui karakter '='. Saat segera (tidak ada spasi putih yang diizinkan di sini)
mengikuti pembatas awal dari blok ePerl, pernyataan "cetak" secara implisit
dihasilkan, yaitu blok di atas setara dengan

<:=$VARIABEL:>

Perhatikan bahwa titik koma juga dihapus di sini, karena akan ditambahkan secara otomatis
(Lihat di atas).

6. Khusus Akhir Garis membuang Command untuk ePerl blok.
ePerl menyediakan perintah pembuangan khusus bernama ``"//"'' yang membuang semua data hingga
dan termasuk karakter baris baru berikut ketika langsung mengikuti blok akhir
pembatas. Biasanya ketika Anda menulis

foo
<: $x = 1; :>
qux

hasilnya adalah

foo

qux

karena ePerl selalu menyimpan kode di sekitar blok ePerl, bahkan hanya baris baru. Tapi ketika
Anda menulis

foo
<: $x = 1; :>//
qux

hasilnya adalah

foo
qux

karena ``"//"'' menghapus semua hal hingga akhir baris, termasuk baris baru.

7. pembatasan in menguraikan.
Setiap program memiliki batasannya, ePerl juga. Kelemahannya adalah Perl tidak hanya
bahasa yang kaya, itu mengerikan menurut penguraian konstruksinya. Mungkin kamu
tahu ungkapan ,,Hanya perl dapat mengurai Perl''. Pikirkan tentang itu. Implikasi dari ini
adalah bahwa ePerl tidak pernah mencoba untuk mengurai blok ePerl itu sendiri. Itu sepenuhnya bergantung pada
Perpustakaan juru bahasa Perl, karena ini adalah satu-satunya contoh yang dapat melakukan ini tanpa
kesalahan. Tapi masalahnya adalah ePerl setidaknya harus mengenali awal dan akhir
posisi blok ePerl tersebut.

Ada dua cara: Itu bisa mencari pembatas akhir saat parsing tetapi di
paling tidak mengenali string yang dikutip (di mana pembatas akhir diperlakukan sebagai data murni). Atau
itu hanya dapat bergerak maju ke pembatas akhir berikutnya dan mengatakan bahwa itu belum terjadi
di dalam konstruksi Perl. Di ePerl 2.0 yang kedua digunakan, sedangkan di ePerl 2.1 yang
yang pertama diambil karena banyak pengguna menginginkannya dengan cara ini saat menggunakan akhir yang buruk
pembatas seperti ``">"''. Namun sebenarnya penulis telah kembali merevisi pendapatnya dan
memutuskan untuk akhirnya menggunakan pendekatan kedua yang digunakan sejak ePerl 2.2 sekarang. Karena
sedangkan yang pertama memungkinkan pembatas yang lebih sepele (yang dengan sendirinya tidak terlalu bagus
ide), gagal ketika konstruksi seperti ``"m|"[^"]+"|"'' dll. digunakan di dalam ePerl
blok. Dan lebih mudah untuk menghindari pembatas akhir di dalam konstruksi Perl (misalnya
melalui garis miring terbalik dalam string yang dikutip) daripada menulis ulang konstruksi Perl yang kompleks untuk menggunakan even
jumlah kutipan.

Jadi, setiap kali pembatas akhir Anda juga muncul di dalam konstruksi Perl, Anda harus melarikan diri
itu dengan cara apapun.

8. HTML entitas konversi.
Karena salah satu kegunaan ePerl adalah sebagai bahasa scripting sisi server untuk halaman HTML,
ada masalah umum dalam hubungannya dengan editor HTML. Mereka tidak bisa tahu ePerl
blok, jadi ketika Anda memasukkan blok itu ke dalam editor, mereka biasanya mengkodekan beberapa
karakter dengan entitas HTML yang sesuai. Masalahnya adalah pengkodean ini
mengarah ke kode Perl yang tidak valid. ePerl menyediakan opsi -C untuk mendekode entitas ini
yang secara otomatis dihidupkan dalam mode CGI. Lihat deskripsi di bawah di bawah opsi -C
lebih lanjut.

Runtime Mode
ePerl dapat beroperasi dalam tiga mode runtime yang berbeda:

Berdiri sendiri Unix menyaring mode
Ini adalah mode operasi default ketika digunakan sebagai alat generasi dari shell Unix
atau sebagai alat pemrosesan batch dari dalam program atau skrip lain:

$ eperl [opsi] - < file input > file output
$ eperl [opsi] inputfile > outputfile
$ eperl [opsi] -o outputfile - < inputfile
$ eperl [opsi] -o outputfile inputfile

Seperti yang Anda lihat, ePerl dapat digunakan dalam kombinasi apa pun dari STDIO dan file eksternal.
Selain itu ada dua varian menarik dari penggunaan mode ini. Pertama, Anda dapat menggunakan
ePerl dalam hubungannya dengan Unix Peristiwa teknik sihir untuk secara implisit memilihnya sebagai
penerjemah untuk skrip Anda mirip dengan cara Anda terbiasa dengan Perl . biasa
penerjemah:

#!/path/ke/eperl [opsi]
foo
<: print "batang"; :>
qux

Kedua, Anda dapat menggunakan ePerl bersama dengan Bourne-Shell Sini Dokumen teknik
dari dalam skrip Shell Anda:

#!/ Bin / sh
...
eperl [opsi] - <
foo
<: print "qux"; :>
qux
EOS
...

Jika Anda perlu membuat shell atau skrip lain dengan ePerl, yaitu Anda memerlukan Shebang
baris dalam output eperl, Anda harus menambahkan baris Shebang yang berisi misalnya
"#!/usr/bin/eperl" terlebih dahulu, karena eperl akan menghapus baris pertama dari input jika
adalah garis shebang. Contoh:

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

akan menghasilkan output berikut:

#!/ Bin / sh
gema qux

Atau Anda dapat menambahkan komentar praprosesor di baris pertama, misalnya seperti ini:

#c Ini adalah komentar untuk mempertahankan baris Shebang di baris berikut
#!/ Bin / sh
echo <: print "qux"; :>

Dan akhirnya Anda dapat menggunakan ePerl langsung dari dalam program Perl dengan menggunakan
Mengurai::ePerl(3) paket (dengan asumsi Anda telah menginstal ini juga; lihat file INSTALL
di dalam distribusi ePerl untuk lebih jelasnya):

#!/path/ke/perl
...
gunakan Parse::ePerl;
...
$skrip = <
foo
<: print "qux"; :>
qux
EOT
...
$hasil = Parse::ePerl::Expand({
Skrip => $skrip,
Hasil => \$hasil,
});
...
cetak $hasil;
...

Lihat Mengurai::ePerl(3) untuk lebih jelasnya.

CGI / 1.1 compliant antarmuka mode
Ini adalah mode runtime di mana ePerl menggunakan antarmuka CGI/1.1 dari server web ketika
digunakan sebagai Sisi server Scripting Bahasa di web. ePerl memasuki mode ini
secara otomatis ketika variabel lingkungan CGI/1.1 "PATH_TRANSLATED" disetel dan
atau nama file skrip tidak tidak mulai dengan awalan NPH ``nph-''. Dalam runtime ini
mode itu mengawali data yang dihasilkan dengan HTTP/1.0 (default) atau HTTP/1.1 (jika diidentifikasi
oleh server web) baris tajuk respons yang sesuai.

ePerl juga mengenali baris header HTTP di awal skrip yang dihasilkan
data, misalnya Anda dapat membuat header HTTP Anda sendiri seperti

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

...

Tetapi perhatikan bahwa meskipun Anda dapat menampilkan header arbitrer, sebagian besar server web membatasi
header yang diterima melalui antarmuka CGI/1.1. Biasanya Anda hanya dapat memberikan
beberapa header HTTP tertentu seperti "Lokasi" atau "Status". Jika Anda membutuhkan lebih banyak kontrol, Anda
harus menggunakan mode antarmuka NPH-CGI/1.1.

Selain itu ePerl menyediakan fitur yang berguna dalam mode ini: Ia dapat mengganti UID/GID-nya
kepada pemilik skrip jika dijalankan sebagai Unix SetUID program (lihat di bawah di bawah
Keamanan dan opsi ``u+s'' dari chmod(1)).

Ada dua cara umum menggunakan mode antarmuka CGI/1.1 ini di Web.
Pertama, Anda dapat menggunakannya untuk secara eksplisit mengubah file HTML biasa menjadi skrip CGI/1.1
melalui Peristiwa teknik (lihat di atas). Untuk server web Apache cukup masukkan yang berikut ini:
baris sebagai baris pertama file:

#!/path/ke/eperl -mc

Kemudian ganti nama skrip dari file.html untuk file.cgi dan atur bit eksekusinya melalui

$ mv file.html file.cgi
$ chmod a+rx file.cgi

Sekarang pastikan Apache menerima file.cgi sebagai program CGI dengan mengaktifkan dukungan CGI
untuk direktori dimana file.cgi tinggal. Untuk ini tambahkan baris

Opsi +ExecCGI

ke .htaccess file dalam direktori ini. Terakhir pastikan Apache benar-benar
mengenali ekstensi .cgi. Mungkin Anda juga harus menambahkan baris berikut
untuk Anda httpd.conf File:

Skrip cgi AddHandler .cgi

Sekarang Anda dapat menggunakan file.cgi alih-alih file.html dan manfaatkan yang dicapai
kemampuan pemrograman dengan bristling file.cgi dengan blok Perl Anda (atau
transformasi menjadi skrip CGI tidak akan berguna).

Sebagai alternatif (atau bahkan sebagai tambahan) seorang webmaster dapat mengaktifkan dukungan ePerl dengan cara yang lebih
cara yang mulus dengan mengonfigurasi ePerl sebagai bahasa skrip sisi server implisit yang nyata.
Ini dilakukan dengan menetapkan tipe MIME ke berbagai ekstensi file ePerl yang valid dan
memaksa semua file dengan tipe MIME ini untuk diproses secara internal melalui ePerl
penerjemah. Anda dapat melakukannya untuk Apache dengan menambahkan yang berikut ke Anda
httpd.conf fillet

Aplikasi AddType/x-httpd-eperl .phtml .eperl .epl
Aplikasi tindakan/x-httpd-eperl /internal/cgi/eperl
ScriptAlias ​​/internal/cgi /path/ke/Apache/cgi-bin

dan membuat salinan dari eperl program di direktori CGI Anda:

$ cp -p /path/ke/eperl /path/ke/Apache/cgi-bin/eperl

Sekarang semua file dengan ekstensi .phtml, .eperl dan .epl diproses secara otomatis
oleh penerjemah ePerl. Tidak perlu untuk Peristiwa line atau yang diaktifkan secara lokal
modus CGI.

Satu petunjuk terakhir: Saat Anda ingin menguji skrip Anda secara offline, jalankan saja dengan paksa
Mode CGI/1.1 dari shell Anda. Tetapi pastikan Anda menyiapkan semua variabel lingkungan Anda
skrip tergantung pada, misalnya "QUERY_STRING" atau "PATH_INFO".

$ ekspor QUERY_STRING="key1=nilai1&key2=nilai2"
$eperl -mc file.phtml

NPH-CGI/1.1 compliant antarmuka mode
Mode runtime ini adalah varian khusus dari mode antarmuka CGI/1.1, karena sebagian besar
server web (misalnya Apache) menyediakannya untuk tujuan khusus. Hal ini dikenal sebagai Tidak Diurai-
Header (NPH) mode CGI/1.1 dan biasanya digunakan oleh server web ketika nama file
program CGI diawali dengan ``"nph-"''. Dalam mode ini, server web tidak melakukan
pemrosesan pada header respons HTTP dan tidak ada buffering dari data yang dihasilkan, yaitu
program CGI sebenarnya harus memberikan respons HTTP lengkap itu sendiri. Keuntungan
adalah bahwa program dapat menghasilkan header HTTP sewenang-wenang atau multi-blok yang disandikan MIME
pesan.

Jadi, di atas kami telah mengganti nama file menjadi file.cgi yang membatasi kita sedikit. Kapan
kami sebagai alternatif mengganti nama file.html untuk nph-file.cgi dan paksa antarmuka NPH-CGI/1.1
mode melalui opsi -M N maka file ini menjadi program yang sesuai dengan NPH-CGI/1.1 di bawah
Apache dan server web lainnya. Sekarang skrip kami dapat memberikan respons HTTPnya sendiri (perlu
tidak, karena ketika tidak ada ePerl menyediakan yang default untuk itu).

#!/path/ke/bin/eperl -mn
<? cetak "HTTP/1.0 200 Oke\n";
print "X-MyHeader: Foo Bar Quux\n";
print "Jenis konten: teks/html\n\n";

...

Seperti yang Anda harapkan, ini juga dapat digunakan dengan Bahasa Skrip Sisi Server implisit
teknik. Meletakkan

Aplikasi AddType/x-httpd-eperl .phtml .eperl .epl
Aplikasi tindakan/x-httpd-eperl /internal/cgi/nph-eperl
ScriptAlias ​​/internal/cgi /path/ke/Apache/cgi-bin

ke Anda httpd.conf dan jalankan perintah

$ cp -p /path/ke/eperl /path/ke/Apache/cgi-bin/nph-eperl

dari cangkangmu. Kredensial mikro is itu disukai cara of menggunakan ePerl as a Sisi server Scripting
Bahasa, karena it menyediakan paling fleksibilitas.

Security
Saat Anda menginstal ePerl sebagai program yang sesuai dengan CGI/1.1 atau NPH-CGI/1.1 (lihat di atas untuk
deskripsi rinci tentang mode ini) melalui

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

or

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

yaitu dengan SetUID sedikit diaktifkan untuk akar pengguna, ePerl dapat beralih ke UID/GID dari
script pemilik. Meskipun ini adalah fitur yang sangat berguna untuk pemrogram skrip (karena satu
tidak perlu lagi membuat file tambahan yang dapat dibaca dunia dan file sementara di seluruh dunia-
dapat ditulis!), dapat berisiko bagi Anda ketika Anda paranoid tentang keamanan SetUID
program. Jika demikian, jangan instal ePerl dengan bit SetUID yang diaktifkan! Ini adalah alasan mengapa
ePerl secara default hanya diinstal sebagai filter Unix Stand-Alone yang tidak pernah membutuhkan ini
fitur.

Bagi kami yang memutuskan bahwa fitur ini penting bagi mereka, ePerl benar-benar mencoba
sulit untuk membuatnya aman. Langkah-langkah berikut harus berhasil dilewati sebelum ePerl
sebenarnya mengganti UID/GID-nya (dalam urutan ini):

1. Skrip harus cocok dengan ekstensi berikut:
.html, .phtml, .ephtml, .epl, .pl, .cgi
2. UID dari proses pemanggilan harus berupa UID yang valid,
yaitu harus ditemukan di file kata sandi sistem
3. UID dari proses pemanggilan harus sesuai dengan
pengguna berikut: root, tidak ada
4. UID pemilik skrip harus berupa UID yang valid,
yaitu harus ditemukan di file kata sandi sistem
5. GID grup skrip harus GID yang valid,
yaitu harus ditemukan di file grup sistem
6. Script harus tetap di bawah atau di homedir . pemilik

IF HANYA ONE OF MEREKA LANGKAH GAGAL, TIDAK UID / GID BERALIH MENGAMBIL TEMPAT!. Selain itu (jika
"DO_ON_FAILED_STEP" didefinisikan sebagai "STOP_AND_ERROR" di eperl_security.h - tidak sesuai standar
didefinisikan dengan cara ini!) ePerl benar-benar dapat menghentikan pemrosesan dan menampilkan halaman kesalahannya. Ini
untuk webmaster yang benar-benar paranoid. Per default ketika ada langkah yang gagal dalam peralihan UID/GID
hanya dinonaktifkan, tetapi ePerl melanjutkan pemrosesan. Atau Anda dapat menonaktifkan beberapa
langkah-langkah pada waktu kompilasi. Melihat eperl_security.h.

Juga ingat bahwa ePerl selalu menghilangkan itu efektif UID/GID, independen of itu
runtime mode dan independen if ePerl memiliki beralih untuk itu UID / GID of itu pemilik. Untuk
keamanan alasan, itu efektif UID / GID is selalu musnah sebelum itu naskah is dieksekusi.

ePerl Preprosesor
ePerl menyediakan praprosesor sendiri yang mirip dengan CPP dalam gaya yang diaktifkan
secara manual melalui opsi -P atau secara otomatis saat ePerl berjalan dalam mode (NPH-)CGI. Pengikut
arahan yang didukung:

"#sertakan jalur"
Direktif ini adalah direktif include yang dapat digunakan untuk memasukkan barang apa saja,
tetapi sebenarnya dirancang untuk digunakan untuk menyertakan file sumber ePerl lainnya. Itu path bisa
menjadi jalur relatif atau absolut untuk sistem file lokal atau sepenuhnya memenuhi syarat
URL HTTP.

Dalam kasus jalur absolut, file diakses langsung di sistem file, sementara
jalur relatif pertama kali dicari di direktori kerja saat ini dan kemudian di semua
direktori yang ditentukan melalui opsi -I. Dalam kasus ketiga (URL HTTP) filenya adalah
mengambil melalui permintaan HTTP/1.0 di jaringan. Di sini pengalihan HTTP (kode respons
301 dan 302) juga didukung.

Perhatikan: Sementara ePerl secara ketat mempertahankan nomor baris saat menerjemahkan brisled
format ePerl ke format Perl biasa, praprosesor ePerl tidak dapat melakukan ini (karena
praprosesor yang mengembang) untuk arahan ini. Jadi, setiap kali Anda menggunakan "#include",
ingat bahwa nomor baris dalam pesan kesalahan salah.

Perhatikan juga satu aspek keamanan penting: Karena Anda dapat memasukkan barang apa pun apa adanya
disediakan dengan arahan ini, gunakan hanya untuk hal-hal yang berada di bawah arahan Anda
kontrol. Jangan gunakan arahan ini untuk memasukkan data asing, setidaknya tidak dari eksternal
server web. Misalnya, Anda memiliki halaman ePerl dengan "#include
http://www.foreigner.com/nice-page.html" dan pada permintaan berikutnya dari halaman ini, Anda
sistem file hilang! Mengapa? Karena orang asing itu mengakui bahwa Anda memasukkan halamannya
dan menggunakan ePerl dan cukup tulis ``" "'' dalam dirinya
halaman. Pikirkan tentang itu. PERNAH GUNAKAN #TERMASUK UNTUK APAPUN DATA YANG IS JANGAN DIBAWAH ANDA SENDIRI
PENGENDALIAN. Alih-alih selalu gunakan "#include" untuk situasi seperti itu.

"#sertakan jalur"
Ini adalah varian aman dari "#include" di mana setelah membaca data dari path semua
Pembatas awal dan akhir ePerl dihapus. Jadi blok ePerl yang berisiko kehilangan artinya
dan diubah menjadi teks biasa. Selalu gunakan arahan ini ketika Anda ingin memasukkan
data yang tidak berada di bawah kendali Anda sendiri.

"#if expr", "#elsif expr", "#else", "#endif"
Ini mengimplementasikan konstruksi "#if-[#else-]#endif" gaya CPP, tetapi dengan semantik Perl.
Sedangkan direktif lainnya adalah perintah preprocessor nyata yang dievaluasi pada
langkah preprocessing, konstruk ini sebenarnya baru saja diubah menjadi ePerl tingkat rendah
membangun, jadi itu tidak benar-benar dievaluasi pada langkah preprocessing. Itu hanya sebuah
pintasan praktis untuk yang berikut (di mana BD adalah pembatas awal yang saat ini digunakan dan
ED pembatas akhir):

``#jika expr'' -> ``BD jika (expr) { _ ED//''
``#elsif expr'' -> ``BD } elsif (expr) { _ ED//''
``#else'' -> ``BD } else { _ ED//''
``#endif'' -> ``BD } _ ED//''

Keuntungan dari pendekatan yang tidak biasa ini adalah bahwa kondisi-jika benar-benar dapat menjadi valid apa pun
Ekspresi Perl yang memberikan fleksibilitas maksimum. Kekurangannya adalah kamu
tidak dapat menggunakan if-construct untuk membuat keputusan prapemrosesan yang nyata. Seperti yang Anda lihat,
tujuan desain hanya untuk memberikan singkatan untuk konstruksi Perl yang lebih rumit.

"#C"
Ini adalah arahan komentar yang hanya membuang semua data hingga dan termasuk
karakter baris baru. Gunakan yang ini untuk mengomentari hal apa pun, bahkan praprosesor lainnya
arahan.

Diperoleh Fungsi
Untuk mengetahui bahwa Anda telah memahami bahwa ePerl menyediakan fasilitas yang bagus untuk menanamkan kode Perl ke dalam
data ASCII apa pun. Tapi sekarang pertanyaan tipikalnya adalah: Kode Perl mana yang dapat dimasukkan ke dalam ini
ePerl memblokir dan apakah ePerl menyediakan fungsionalitas khusus di dalam blok ePerl ini?

Jawabannya adalah: Pertama, Anda dapat menempatkan benar-benar Apa pun Kode Perl ke dalam blok ePerl yang
valid untuk penerjemah Perl yang ditautkan dengan ePerl. Kedua, ePerl melakukannya tidak menyediakan apapun
fungsionalitas khusus di dalam blok ePerl ini, karena Perl sudah canggih
cukup ;-)

Implikasinya adalah: Karena Anda dapat menggunakan kode Perl yang valid yang dapat Anda gunakan
semua modul Perl 5 yang tersedia, bahkan modul yang menggunakan objek bersama (karena ePerl is a
Juru bahasa Perl, termasuk dukungan DynaLoader). Jadi, telusuri ke Perl . Komprehensif
Jaringan Arsip (CPAN) melalui http://www.perl.com/perl/CPAN dan dapatkan paket favorit Anda
yang dapat membuat hidup Anda lebih mudah (baik dari dalam skrip Perl biasa dan skrip ePerl)
dan cukup gunakan konstruksi ``"gunakan nama;"'' di blok ePerl mana pun untuk menggunakannya dari dalam
ePerl.

Saat menggunakan ePerl sebagai Server-Side-Scripting-Language, saya sangat menyarankan Anda untuk menginstal di
setidaknya paket CGI.pm (saat ini versi 2.36), Aliran HTML (1.40) libnet (1.0505) dan
libwww-perl (5.08). Saat Anda ingin menghasilkan gambar langsung juga, saya sarankan Anda
untuk tambahan menginstal setidaknya GD (1.14) dan Ukuran gambar (2.3). Penerjemah ePerl di
bersama dengan modul Perl 5 yang sangat canggih ini akan memberi Anda hasil maksimal
fleksibilitas dan fungsionalitas. Dengan kata lain: Membuat menggunakan of maksimum Perangkat lunak Leverage in
itu hacker dunia of Perl as besar as mungkin.

PILIHAN


-d nama=nilai
Menetapkan variabel Perl dalam paket "main" yang dapat direferensikan melalui $name atau lebih
secara eksplisit melalui $main::name. Perintah

eperl -d nama=nilai ..

sebenarnya setara dengan memiliki



pada awal file masukan. Opsi ini dapat terjadi lebih dari sekali.

-D nama=nilai
Menetapkan variabel lingkungan yang dapat direferensikan melalui $ENV{'variable'} di dalam
Blok Perl. Perintah

eperl -D nama=nilai ..

sebenarnya setara dengan

nama ekspor = nilai; eperl...

tetapi keuntungan dari opsi ini adalah tidak memanipulasi penelepon
lingkungan. Opsi ini dapat terjadi lebih dari sekali.

-B awal_pembatas
Mengatur blok Perl mulai string pembatas. Gunakan ini bersama dengan "-E" untuk mengatur
pembatas yang berbeda saat menggunakan ePerl sebagai bahasa pembuatan HTML offline saat masih
menggunakannya sebagai bahasa scripting HTML online. Pembatas default adalah " "
untuk mode CGI dan "<:" dan ":>" untuk mode pemfilteran Unix yang berdiri sendiri.

Ada banyak kemungkinan variasi yang dapat Anda pilih: ""<:"" dan "":>"" (
pembatas mode penyaringan mandiri ePerl default), "" "" (standarnya
Pembatas mode antarmuka ePerl CGI), "" "" and "" ""
(gaya bahasa skrip HTML standar), "" "" and
"" "" (HTML3.2+ yang akan datang alias gaya Cougar), "" "" dan "" ""
(gaya seperti HTML), "" "" (gaya NeoScript dan SSI) atau
bahkan "" "" (gaya PHP/FI; tetapi ini tidak lagi direkomendasikan karena dapat
menyebabkan masalah penguraian. Harus digunakan hanya untuk kompatibilitas mundur ke ePerl lama
versi 1.x).

Pembatas awal dan akhir dicari tidak peka huruf besar-kecil.

-E akhir_pembatas
Menyetel string pembatas ujung blok Perl. Lihat juga opsi -B.

-i Memaksa pembatas awal dan akhir untuk dicari tidak peka huruf besar/kecil. Gunakan ini ketika
Anda menggunakan pembatas seperti ``" "..." "'' atau yang lebih tekstual.

-m mode
Ini memaksa ePerl untuk bertindak dalam mode runtime tertentu. Lihat di atas untuk detailnya
deskripsi tiga mode yang mungkin: Filter berdiri sendiri (mode="f", yaitu opsi
-mf), mode antarmuka CGI/1.1 (mode="c", yaitu opsi -mc) atau antarmuka NPH-CGI/1.1
modus (mode="n", yaitu opsi -M N).

-o berkas keluaran
Memaksa output untuk ditulis ke berkas keluaran alih-alih STDOUT. Gunakan opsi ini ketika
menggunakan ePerl sebagai filter. File keluaran ``-'' set STDOUT sebagai pegangan keluaran
secara eksplisit. Perhatikan bahwa file ini relatif terhadap direktori file sumber ketika
mode runtime dipaksa untuk CGI atau NPH-CGI.

-k Memaksa ePerl untuk menyimpan direktori kerja saat ini dari tempat dimulainya. Per
ePerl default akan berubah menjadi direktori tempat file yang akan dieksekusi tinggal. Ini
opsi ini berguna jika Anda menggunakan ePerl sebagai filter offline pada file sementara.

-x Ini menetapkan mode debug di mana ePerl mengeluarkan skrip Perl yang dibuat secara internal ke
konsol (/dev/tty) sebelum dijalankan. Hanya untuk masalah debugging dengan file input
konversi.

-I direktori
Tentukan direktori yang keduanya digunakan untuk arahan "#include" dan "#include" dari
praprosesor ePerl dan ditambahkan ke @INC di bawah runtime. Opsi ini dapat terjadi lebih banyak
dari sekali.

-P Mengaktifkan Preprosesor ePerl khusus secara manual (lihat di atas). Opsi ini diaktifkan
untuk semua mode CGI secara otomatis.

-C Ini memungkinkan konversi entitas HTML untuk blok ePerl. Opsi ini secara otomatis
dipaksa dalam mode CGI.

Masalah yang diselesaikan di sini adalah sebagai berikut: Saat Anda menggunakan ePerl sebagai Server-Side-
Scripting-Bahasa untuk halaman HTML dan Anda mengedit file sumber ePerl Anda melalui HTML
editor, kemungkinan besar editor Anda menerjemahkan beberapa karakter yang dimasukkan ke HTML
entitas, misalnya ``"<"'' hingga ``"<"''. Ini mengarah ke kode Perl yang tidak valid di dalam
blok ePerl, karena editor HTML tidak memiliki pengetahuan tentang blok ePerl. Menggunakan ini
opsi parser ePerl secara otomatis mengubah semua entitas yang ditemukan di dalam blok ePerl
kembali ke karakter biasa, sehingga penerjemah Perl kembali menerima blok kode yang valid.

-L Ini mengaktifkan karakter kelanjutan baris ``"\"'' (garis miring terbalik) di luar blok ePerl.
Dengan opsi ini, Anda dapat menyebarkan data satu baris ke lebih banyak baris. Tetapi gunakan dengan hati-hati: Ini
opsi mengubah data Anda (di luar blok ePerl). Biasanya ePerl benar-benar melewati
semua data di sekitarnya sebagai data mentah. Dengan opsi ini baris baru menjadi semantik baru.

-T Ini mengaktifkan Perl's Menodai mode di mana penerjemah Perl mengambil tindakan pencegahan khusus
disebut pemeriksaan noda untuk mencegah jebakan yang jelas dan tidak kentara. Melihat perlsec(1) untuk lebih
rincian.

-w Ini memungkinkan Peringatan di mana penerjemah Perl menghasilkan beberapa diagnostik yang indah. Melihat
perldiag(1) untuk lebih jelasnya.

-c Ini menjalankan pemeriksaan sintaks murni yang mirip dengan ``"perl -c"''.

-r Ini mencetak file README ePerl internal ke konsol.

-l Ini mencetak file LISENSI ePerl internal ke konsol.

-v Ini mencetak informasi versi ePerl ke konsol.

-V Sama seperti pilihan -v tetapi juga menunjukkan parameter kompilasi Perl.

LINGKUNGAN


Bekas Variabel
"PATH_TRANSLATED"
Variabel CGI/1.1 ini digunakan untuk menentukan file sumber ketika ePerl beroperasi sebagai
Program NPH-CGI/1.1 di bawah lingkungan server web.

Diperoleh Variabel
"SCRIPT_SRC_PATH"
Nama path absolut dari skrip. Gunakan ini ketika Anda ingin langsung mengakses
skrip dari dalam dirinya sendiri, misalnya untuk melakukan "stat()" dan panggilan lainnya.

"SCRIPT_SRC_PATH_DIR"
Bagian direktori dari "SCRIPT_SRC_PATH". Gunakan yang ini ketika Anda ingin mengakses secara langsung
file lain yang berada di direktori yang sama dengan skrip, misalnya untuk membaca config
file, dll.

"SCRIPT_SRC_PATH_FILE"
Bagian nama file dari "SCRIPT_SRC_PATH". Gunakan yang ini saat Anda membutuhkan nama
script, misalnya untuk referensi diri relatif melalui URL.

"SCRIPT_SRC_URL"
URL skrip yang sepenuhnya memenuhi syarat. Gunakan ini saat Anda membutuhkan URL untuk self-
referensi.

"SCRIPT_SRC_URL_DIR"
Bagian direktori dari "SCRIPT_SRC_URL". Gunakan yang ini ketika Anda ingin mengakses secara langsung
file lain yang berada di direktori yang sama dengan skrip melalui Web, misalnya ke
referensi gambar, dll.

"SCRIPT_SRC_URL_FILE"
Bagian nama file dari "SCRIPT_SRC_URL". Gunakan yang ini saat Anda membutuhkan nama
script, misalnya untuk referensi diri relatif melalui URL. Sebenarnya sama dengan
"SCRIPT_SRC_PATH_FILE", tetapi disediakan untuk konsistensi.

"SCRIPT_SRC_SIZE"
Ukuran file skrip, dalam byte.

"SCRIPT_SRC_MODIFIED"
Waktu modifikasi terakhir skrip, dalam detik sejak 0 jam, 0 menit, 0
detik, 1 Januari 1970, Waktu Universal Terkoordinasi.

"SCRIPT_SRC_MODIFIED_CTIME"
Waktu modifikasi terakhir dari skrip, di waktu(3) format (``WDAY MMM DD HH:MM:SS
YYYY\n'').

"SCRIPT_SRC_MODIFIED_ISOTIME"
Waktu modifikasi terakhir skrip, dalam format ISO (``DD-MM-YYYY HH:MM'').

"SCRIPT_SRC_OWNER"
Nama pengguna pemilik skrip.

"VERSION_INTERPRETER"
String identifikasi ePerl.

"VERSION_LANGUAGE"
String identifikasi perpustakaan juru bahasa Perl yang digunakan.

Diperoleh Built-In Images
Gambar built-in berikut dapat diakses melalui URL "/url/to/nph-eperl/"NAMA".gif":

"logo.gif"
Logo ePerl standar. Tolong jangan sertakan yang ini di situs web Anda.

"powered.gif"
``didukung by ePerl 2.2'' logo. Jangan ragu untuk menggunakan ini di situs web Anda.

Gunakan eperl online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

  • 1
    Avogadro
    Avogadro
    Avogadro adalah molekul canggih
    editor yang dirancang untuk penggunaan lintas platform
    dalam kimia komputasi, molekul
    pemodelan, bioinformatika, bahan
    ilmu dan...
    Unduh Avogadro.dll
  • 2
    XMLTV
    XMLTV
    XMLTV adalah seperangkat program untuk diproses
    Daftar TV (tvguide) dan bantu kelola
    menonton TV Anda, menyimpan daftar di
    format berbasis XML. Ada utilitas untuk
    melakukan...
    Unduh XMLTV
  • 3
    menyerang
    menyerang
    Proyek Perangkat Lunak Bebas Striker. Artefak
    dirilis di bawah 'berbasis niat'
    lisensi ganda: AGPLv3 (komunitas) dan
    CC-BY-NC-ND 4.0 internasional
    (komersial)...
    Unduh strir.dll
  • 5
    GIFLIB
    GIFLIB
    giflib adalah perpustakaan untuk membaca dan
    menulis gambar gif. Ini adalah API dan ABI
    kompatibel dengan libungif yang ada di
    penggunaan luas sementara kompresi LZW
    algoritma adalah...
    Unduh GIFLIB.dll
  • 6
    Alt-f
    Alt-f
    Alt-F menyediakan sumber terbuka dan gratis
    firmware alternatif untuk DLINK
    DNS-320/320L/321/323/325/327L and
    DNR-322L. Alt-F memiliki Samba dan NFS;
    mendukung ext2/3/4...
    Unduh Alt-F
  • Lebih banyak lagi »

Perintah Linux

  • 1
    2ping6
    2ping6
    2ping - Utilitas ping dua arah ...
    Jalankan 2ping6
  • 2
    2-3-2.7
    2-3-2.7
    2to3-2.7 - Konverter Python2 ke Python3
    ...
    Jalankan 2to3-2.7
  • 3
    cpqarrayd
    cpqarrayd
    cpqarrayd - Pengontrol array
    SINTAKSIS monitoringdaemon: cpqarrayd [-d]
    [-v] [-t host [-t host]] DESKRIPSI:
    Program ini mampu memantau HP
    (Kompaq) arra...
    Jalankan cpqarrayd
  • 4
    cproto
    cproto
    cproto - menghasilkan prototipe fungsi C
    dan mengubah definisi fungsi ...
    Jalankan cproto
  • 5
    perbaikan gapi2
    perbaikan gapi2
    tidak berdokumen - Tidak ada halaman manual untuk ini
    program. KETERANGAN: Program ini tidak
    tidak memiliki halaman manual. Jalankan perintah ini
    dengan tombol bantuan untuk melihat apa itu
    melakukan. Untuk...
    Jalankan gapi2-fixup
  • 6
    gapi2-parser
    gapi2-parser
    tidak berdokumen - Tidak ada halaman manual untuk ini
    program. KETERANGAN: Program ini tidak
    tidak memiliki halaman manual. Jalankan perintah ini
    dengan tombol bantuan untuk melihat apa itu
    melakukan. Untuk...
    Jalankan gapi2-parser
  • Lebih banyak lagi »

Ad