انگلیسیفرانسویاسپانیایی

Ad


فاویکون OnWorks

eperl - آنلاین در ابر

eperl را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور eperl است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


ePerl - Embedded Perl 5 Language

نسخه


@V@

خلاصه


اپرل [-d نام=ارزش] [-D نام=ارزش] [-B start_delimiter] [-E end_delimiter] [-i] [-m
حالت] [-o فایل خروجی] [-k] [-I فهرست راهنما] [-P] [-C] [-L] [-x] [-T] [-w] [-c] [فایل ورودی]

اپرل [-r] [-l] [-v] [-V]

شرح


چکیده
ePerl یک فایل ASCII پر از دستورات برنامه Perl 5 را با ارزیابی
کد پرل 5 هنگام عبور از داده های ASCII ساده. این می تواند به روش های مختلف عمل کند: به عنوان
یک فیلتر یونیکس مستقل یا ماژول Perl 5 یکپارچه برای کارهای تولید فایل عمومی
و به عنوان یک زبان برنامه نویسی وب سرور قدرتمند برای برنامه نویسی صفحات HTML پویا.

معرفی
La اپرل برنامه است جاسازی شده پرل 5 زبان مترجم این واقعاً کامل است
دارای مفسر پرل 5، اما با محیط فراخوانی و فایل منبع متفاوت
طرح‌بندی نسبت به مفسر پیش‌فرض Perl (معمولاً اجرایی پرل or perl5 در بیشتر
سیستم های). این برای تولید فایل ASCII عمومی با فلسفه طراحی شده است
تعبیه کردن کد برنامه Perl 5 را در داده های ASCII به جای روش معمولی که در آن قرار می دهید
داده های ASCII را در یک برنامه Perl 5 جاسازی کنید (معمولاً با نقل قول از داده ها و استفاده از آنها از طریق
بیانیه های "چاپ"). بنابراین، به جای نوشتن یک اسکریپت پرل ساده مانند

#!/path/to/perl
چاپ "foo bar\n"؛
چاپ "baz quux\n"؛
for ($i = 0; $i < 10; $i++) { print "foo #${i}\n"; }
چاپ "foo bar\n"؛
چاپ "baz quux\n"؛

اکنون می توانید آن را به عنوان یک اسکریپت ePerl بنویسید:

#!/path/to/eperl
فوو بار
باز کوکس
<: برای ($i = 0; $i < 10; $i++) { print "foo #${i}\n"; } :>
فوو بار
باز کوکس

اگرچه نوع ePerl طرح بندی فایل منبع متفاوتی دارد، معنایی یکسان است.
یعنی هر دو اسکریپت دقیقاً همان داده های حاصل را در "STDOUT" ایجاد می کنند.

قصد
ePerl به سادگی یک کد چسب است که قدرت برنامه نویسی مفسر Perl 5 را ترکیب می کند
کتابخانه با تکنیک جاسازی پیچیده ترفند جاسازی این است: آن را تبدیل می کند
فایل منبع در یک اسکریپت معتبر Perl که سپس دریافت می شود به طور کامل تنها توسط یک مورد ارزیابی شده است
نمونه داخلی مترجم Perl 5. برای رسیدن به این هدف، ePerl همه را به صورت ساده ترجمه می کند
کد در (فرار شده) پرل 5 رشته قرار داده شده در چاپ ساخت در حالی که از همه عبور می کند
کد بومی پرل 5 تعبیه شده است. همانطور که می بینید، خود ePerl دقیقاً همین کار را می کند
در داخل، یک برنامه نویس احمق باید هنگام نوشتن یک اسکریپت ساده نسل پرل انجام دهد.

با توجه به ماهیت چنین کدهای پرزدار، ePerl واقعاً بهترین تلاش برای زمانی است
داده های ASCII تولید شده حاوی داده های پویا واقعا ایستا هستند. یا به عبارت دیگر: استفاده کنید
ePerl if شما می خواهم به نگه داشتن la اکثر of la تولید ASCII داده ها in ساده قالب در حین تنها
برنامه نویسی برخی از وزوز چیز. هنگام تولید داده های پویا خالص از آن استفاده نکنید. وجود دارد
هیچ مزیتی برای کد برنامه معمولی یک اسکریپت ساده Perl ندارد. بنابراین، ایستا
قسمت باید حداقل 60٪ باشد یا مزیت تبدیل به یک نقطه ضعف می شود.

ePerl در اصل خود در واقع برای یک موقعیت شدید طراحی شده بود: به عنوان یک وب سرور
زبان اسکریپت برای تولید سریع صفحه HTML. در اینجا شما یک مورد معمولی را دارید
معمولاً 90 درصد داده‌ها شامل تگ‌های HTML استاتیک خالص و ASCII ساده هستند در حالی که فقط
10% باقیمانده سازه های برنامه نویسی هستند که به صورت پویا کد نشانه گذاری بیشتری تولید می کنند.
به همین دلیل است که ePerl در کنار استاندارد Unix filtering runtime-mode نیز پشتیبانی می کند
رابط های CGI/1.1 و NPH-CGI/1.1.

جاسازی شده پرل نحو
عملاً می توانید هر ساختار معتبر پرل را در بلوک های ePerl پرل 5 مورد استفاده قرار دهید
کتابخانه مترجم می تواند ارزیابی کند. اما نکات مهمی وجود دارد که همیشه باید رعایت کنید
هنگام استفاده از ePerl به یاد داشته باشید و هرگز فراموش نکنید:

1. جداکننده ها هستند همیشه دور انداخته شد
گفتن بی اهمیت است، اما باید حداقل یک بار ذکر شود. جداکننده های بلوک ePerl
همیشه کنار گذاشته می شوند و فقط برای ePerl لازم است که Perl تعبیه شده را تشخیص دهد
سازه ها آنها هرگز به خروجی نهایی منتقل نمی شوند.

2. تولید محتوا است به go به "STDOUT".
اگرچه می توانید زیر روال ها را تعریف کنید، برخی از داده ها را محاسبه کنید و غیره را در داخل بلوک های ePerl انجام دهید
فقط داده هایی که به صراحت در فایل "STDOUT" نوشته شده است گسترش می یابد. در دیگر
کلمات: وقتی یک بلوک ePerl محتوا را در "STDOUT" تولید نمی کند، کاملاً تولید می شود
در خروجی نهایی با یک رشته خالی جایگزین می شود. اما زمانی که محتوا تولید می شود، تولید می شود
در نقطه بلوک ePerl در خروجی نهایی قرار دهید. معمولا محتوا تولید می شود
از طریق ساختارهای "چاپ" خالص که به طور ضمنی از "STDOUT" در زمانی که فایل handle داده نمی شود استفاده می کنند.

3. تولید محتوا on "STDERR" همیشه منجر به an خطا.
هر زمان که محتوا در فایل "STDERR" تولید می شود، ePerl یک خطا نمایش می دهد
(از جمله محتوای STDERR). از این برای خروج از خطاها در حین انتقال خطاها استفاده کنید
ePerl به محیط تماس مسدود می شود.

4. نام نقطه ویرگول
به دلیل نکته 6 زیر (به زیر مراجعه کنید) و این واقعیت که اکثر کاربران این کار را نمی کنند
ترجمه داخلی بلوک ePerl را در ذهن داشته باشید، ePerl در مورد آخرین مورد هوشمند است
نقطه ویرگول معمولاً هر بلوک ePerl باید با نقطه ویرگول آخرین پایان یابد
فرمان

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

اما زمانی که آخرین نقطه ویرگول وجود نداشته باشد، به طور خودکار توسط ePerl اضافه می شود

<: cmd; ...; cmd :>

همچنین نحو صحیح است. اما گاهی اوقات لازم است ePerl را مجبور کنید نه برای اضافه کردن
نقطه ویرگول سپس می توانید یک "_"" (خط زیر) را به عنوان آخرین فضای خالی اضافه کنید
کاراکتر در بلوک برای وادار کردن ePerl به ترک نقطه ویرگول نهایی. از این استفاده کنید
سازه هایی مانند زیر

<: اگر (...) { _:>
فو
<: } else { _:>
بار
<: } :>

جایی که می خواهید یک دستورالعمل Perl را در بلوک های ePerl بیشتری پخش کنید.

5. حیاط برای فقط "چاپ". بلوک
زیرا اغلب اوقات ePerl فقط برای درون یابی متغیرها استفاده می شود، به عنوان مثال

<: چاپ $VARIABLE; :>

ارائه یک میانبر برای این نوع ساختارها مفید است. بنابراین ePerl ارائه می دهد
میانبر از طریق کاراکتر '='. هنگامی که بلافاصله (اینجا هیچ فضای خالی مجاز نیست)
به دنبال جداکننده شروع یک بلوک ePerl یک عبارت "print" به طور ضمنی است
تولید شده، یعنی بلوک فوق معادل است

<:=$VARIABLE:>

توجه داشته باشید که نقطه ویرگول نیز در اینجا حذف شده است، زیرا به طور خودکار اضافه می شود
(بالا را ببین).

6. ویژه انتهای خط دور انداختن فرمان برای ePerl بلوک
ePerl یک دستور رد کردن ویژه به نام ""//"" ارائه می دهد که تمام داده ها را دور می اندازد.
و شامل کاراکتر خط جدید زیر هنگامی که مستقیماً یک بلوک انتهایی را دنبال می کند
حائل، جداکننده. معمولا وقتی می نویسی

فو
<: $x = 1; :>
کوکس

نتیجه این است

فو

کوکس

زیرا ePerl همیشه کد را در اطراف بلوک های ePerl حفظ می کند، حتی فقط خطوط جدید. اما کی
شما می نویسید

فو
<: $x = 1; :>//
کوکس

نتیجه این است

فو
کوکس

زیرا ""//"" همه موارد را تا انتهای خط حذف کرد، شامل خط جدید

7. محدودیت in تجزیه
هر برنامه ای محدودیت های خود را دارد، ePerl نیز. نقص آن این است که پرل نه تنها یک
زبان غنی، با توجه به تجزیه ساختارهای آن، زبانی وحشتناک است. شاید شما
عبارت "فقط" را بدانید پرل می تواند تجزیه کند پرل''. در مورد آن فکر کنید. مفهوم این
این است که ePerl هرگز سعی نمی کند خود بلوک های ePerl را تجزیه کند. کاملا متکی است
کتابخانه مفسر پرل، زیرا تنها نمونه ای است که می تواند بدون آن این کار را انجام دهد
خطاها اما مشکل این است که ePerl حداقل باید شروع و پایان را تشخیص دهد
موقعیت های آن بلوک های ePerl.

دو راه وجود دارد: می تواند در حین تجزیه به دنبال جداکننده انتهایی باشد اما در
حداقل رشته های نقل قول را تشخیص دهید (جایی که جداکننده انتهایی به عنوان داده خالص در نظر گرفته می شود). یا
فقط می تواند به سمت جداکننده انتهای بعدی حرکت کند و بگوید که اتفاق نیفتاده است
داخل ساختارهای پرل در ePerl 2.0 مورد دوم استفاده شد، در حالی که در ePerl 2.1 از
اولین مورد به این دلیل گرفته شد که بسیاری از کاربران در حالی که از پایان بد استفاده می کردند به این روش می خواستند
جداکننده هایی مانند ``">"''. اما در واقع نویسنده دوباره نظر خود را اصلاح کرده است و
تصمیم گرفتیم در نهایت از رویکرد دوم استفاده کنیم که از زمان ePerl 2.2 در حال حاضر استفاده می شود. زیرا
در حالی که اولی محدودیت‌های بی‌اهمیت بیشتری را مجاز می‌کند (که خود واقعاً خوب نیست
ایده)، هنگامی که ساختارهایی مانند ``"m|"[^"]+"|"'' و غیره در داخل ePerl استفاده می شود، با شکست مواجه می شود.
بلوک ها و فرار از جداکننده های انتهایی در ساختارهای پرل آسان تر است (به عنوان مثال
از طریق بک اسلش در رشته های نقل قول) از بازنویسی ساختارهای پیچیده Perl برای استفاده حتی
تعداد نقل قول ها

بنابراین، هر زمان که جداکننده انتهایی شما نیز در ساختارهای پرل رخ داد، باید فرار کنید
آن را به هر طریقی

8. HTML موجودیت تبدیل.
از آنجا که یکی از کاربردهای ePerl به عنوان زبان برنامه نویسی سمت سرور برای صفحات HTML است.
یک مشکل رایج در ارتباط با ویرایشگرهای HTML وجود دارد. آنها نمی توانند ePerl را بشناسند
بلوک‌ها، بنابراین وقتی آن بلوک‌ها را در داخل ویرایشگرها وارد می‌کنید، معمولاً برخی را کدگذاری می‌کنند
کاراکترها با موجودیت های HTML مربوطه. مشکل این است که این رمزگذاری
منجر به کد پرل نامعتبر می شود. ePerl این گزینه را فراهم می کند -C برای رمزگشایی این موجودات
که به طور خودکار در حالت های CGI روشن می شود. توضیحات زیر را در زیر گزینه ببینید -C
برای جزئیات بیشتر.

زمان اجرا حالت های
ePerl می تواند در سه حالت زمان اجرا مختلف کار کند:

تنهایی یونیکس فیلتر حالت
این حالت عملکرد پیش فرض زمانی است که به عنوان ابزار تولید از پوسته یونیکس استفاده می شود
یا به عنوان یک ابزار پردازش دسته ای از داخل برنامه ها یا اسکریپت های دیگر:

$ eperl [گزینه‌ها] - < inputfile > outputfile
$ eperl [گزینه‌ها] inputfile > outputfile
$ eperl [گزینه‌ها] -o outputfile - <inputfile
$ eperl [گزینه‌ها] -o فایل ورودی خروجی

همانطور که می بینید، ePerl را می توان در هر ترکیبی از STDIO و فایل های خارجی استفاده کرد.
علاوه بر این، دو نوع جالب برای استفاده از این حالت وجود دارد. ابتدا می توانید استفاده کنید
ePerl در ارتباط با یونیکس شبانگ تکنیک جادویی برای انتخاب ضمنی آن به عنوان
مفسر اسکریپت شما شبیه به روشی است که با پرل ساده به آن عادت کرده اید
مترجم:

#!/path/to/eperl [گزینه‌ها]
فو
<: چاپ "bar"; :>
کوکس

دوم، شما می توانید ePerl را در ارتباط با Bourne-Shell استفاده کنید اینجا سند تکنیک
از درون اسکریپت های پوسته شما:

#!/ بن / شل
...
eperl [گزینه ها] - <
فو
<: چاپ "quux"; :>
کوکس
EOS
...

اگر نیاز به تولید پوسته یا اسکریپت های دیگر با ePerl دارید، یعنی به یک shebang نیاز دارید
خط در خروجی eperl، شما باید یک خط shebang حاوی به عنوان مثال اضافه کنید
ابتدا "#!/usr/bin/eperl"، زیرا eperl خط اول را از ورودی حذف می کند.
یک خط شبانگ است. مثال:

#!/usr/bin/eperl
#!/ بن / شل
echo <: print "quux"; :>

خروجی زیر را به همراه خواهد داشت:

#!/ بن / شل
اکو کوکس

یا می توانید یک نظر پیش پردازنده را در خط اول اضافه کنید، به عنوان مثال:

#c این یک نظر برای حفظ خط shebang در خط زیر است
#!/ بن / شل
echo <: print "quux"; :>

و در نهایت می توانید از ePerl مستقیماً از داخل برنامه های Perl با استفاده از
تجزیه::ePerl(3) بسته (با فرض اینکه شما این را نیز نصب کرده اید؛ فایل را ببینید نصب
در داخل توزیع ePerl برای جزئیات بیشتر):

#!/path/to/perl
...
از Parse::ePerl استفاده کنید.
...
$script = <
فو
<: چاپ "quux"; :>
کوکس
EOT
...
$result = تجزیه::ePerl::Expand({
اسکریپت => $script،
نتیجه => \$نتیجه،
})؛
...
چاپ $نتیجه;
...

دیدن تجزیه::ePerl(3) برای جزئیات بیشتر.

CGI / 1.1 موافق رابط حالت
این حالت زمان اجرا است که در آن ePerl از رابط CGI/1.1 یک وب سرور استفاده می کند
به عنوان استفاده می شود سمت سرور برنامه نویسی زبان در وب ePerl وارد این حالت می شود
هنگامی که متغیر محیطی CGI/1.1 "PATH_TRANSLATED" تنظیم می شود، به طور خودکار و آن
یا نام فایل اسکریپت انجام می دهد نه با پیشوند NPH `` شروع کنیدnph-''. در این زمان اجرا
حالت داده های حاصل را با HTTP/1.0 (پیش فرض) یا HTTP/1.1 (در صورت شناسایی) پیشوند می کند.
توسط وب سرور) خطوط سرصفحه پاسخ سازگار.

ePerl همچنین خطوط هدر HTTP را در ابتدای اسکریپت های تولید شده تشخیص می دهد
داده ها، به عنوان مثال شما می توانید هدرهای HTTP خود را مانند

<? $url = "..";
چاپ "مکان: $url\n";
چاپ "URI: $url\n\n"؛ !>

...

اما توجه داشته باشید که در حالی که می توانید هدر دلخواه را خروجی کنید، اکثر وب سرورها آن را محدود می کنند
هدرهایی که از طریق رابط CGI/1.1 پذیرفته می شوند. معمولا شما می توانید فقط یک
چند عنوان خاص HTTP مانند "مکان" یا "وضعیت". اگر به کنترل بیشتری نیاز دارید
باید از حالت رابط NPH-CGI/1.1 استفاده کنید.

علاوه بر این ePerl یک ویژگی مفید در این حالت ارائه می دهد: می تواند UID/GID خود را تغییر دهد
به صاحب اسکریپت اگر به صورت یونیکس اجرا شود SetUID برنامه (زیر زیر را ببینید
امنیت و گزینه "u+s" of chmod(1).

دو روش رایج برای استفاده از این حالت رابط CGI/1.1 در وب وجود دارد.
ابتدا، می توانید از آن برای تبدیل صریح فایل های HTML ساده به اسکریپت های CGI/1.1 استفاده کنید.
از طریق شبانگ تکنیک (به بالا مراجعه کنید). برای یک وب سرور آپاچی فقط موارد زیر را قرار دهید
خط به عنوان خط اول فایل:

#!/path/to/eperl -mc

سپس نام اسکریپت را از آن تغییر دهید file.html به file.cgi و بیت اجرای آن را از طریق تنظیم کنید

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

حالا مطمئن شوید که آپاچی قبول می کند file.cgi به عنوان یک برنامه CGI با فعال کردن پشتیبانی CGI
برای دایرکتوری که در آن file.cgi ساکن است. برای این خط را اضافه کنید

Options + ExecCGI

به . htaccess تغییر نام دهید فایل در این دایرکتوری در نهایت مطمئن شوید که Apache واقعا
پسوند را تشخیص می دهد .cgi. شاید علاوه بر این باید خط زیر را اضافه کنید
خود را به httpd.conf فایل:

AddHandler cgi-script .cgi

حالا شما می توانید استفاده کنید file.cgi بجای file.html و از دستاوردهای به دست آمده استفاده کنید
قابلیت برنامه نویسی با بریستلینگ file.cgi با بلوک های پرل خود (یا
تبدیل به یک اسکریپت CGI بی فایده خواهد بود).

از طرف دیگر (یا حتی علاوه بر این) یک وب مستر می تواند پشتیبانی ePerl را در موارد بیشتری فعال کند
روشی یکپارچه با پیکربندی ePerl به عنوان یک زبان برنامه نویسی ضمنی واقعی سمت سرور.
این کار با اختصاص یک نوع MIME به پسوندهای مختلف فایل ePerl معتبر و
مجبور کردن تمام فایل‌های دارای این نوع MIME به صورت داخلی از طریق ePerl پردازش شوند
مترجم با افزودن موارد زیر به آپاچی می توانید این کار را برای آپاچی انجام دهید
httpd.conf پرونده

AddType application/x-httpd-eperl .phtml .eperl .epl
Action 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".

صادرات $ QUERY_STRING="key1=value1&key2=value2"
$ eperl -mc file.phtml

NPH-CGI/1.1 موافق رابط حالت
این حالت زمان اجرا یک نوع خاص از حالت رابط CGI/1.1 است، زیرا اکثر
وب سرورها (به عنوان مثال آپاچی) آن را برای اهداف خاص ارائه می دهند. به عنوان شناخته شده است تجزیه نشده-
سربرگ (NPH) حالت CGI/1.1 و معمولاً توسط وب سرور هنگام نام فایل استفاده می شود
برنامه CGI با "nph-"" پیشوند است. در این حالت وب سرور هیچ کاری انجام نمی دهد
پردازش بر روی هدرهای پاسخ HTTP و بدون بافر کردن داده های حاصل، به عنوان مثال
برنامه CGI در واقع باید خود یک پاسخ کامل HTTP ارائه دهد. مزیت
این است که برنامه می تواند سرصفحه های HTTP دلخواه یا چند بلوک رمزگذاری شده با MIME ایجاد کند
پیام ها.

بنابراین، در بالا ما فایل را به تغییر نام دادیم file.cgi که کمی ما را محدود کرد. چه زمانی
ما به طور متناوب نام خود را تغییر می دهیم file.html به nph-file.cgi و رابط NPH-CGI/1.1 را مجبور کنید
حالت از طریق گزینه - دقیقه سپس این فایل به یک برنامه سازگار با NPH-CGI/1.1 تبدیل می شود
آپاچی و سایر وب سرورها. اکنون اسکریپت ما می تواند پاسخ HTTP خود را ارائه دهد (نیاز است
نه، زیرا در صورت عدم وجود ePerl یک پیش فرض برای آن فراهم می کند).

#!/path/to/bin/eperl -mn
<? print "HTTP/1.0 200 Ok\n";
چاپ "X-MyHeader: Foo Bar Quux\n"؛
چاپ "نوع محتوا: متن/html\n\n"؛

...

همانطور که انتظار دارید این می تواند با زبان برنامه نویسی ضمنی سمت سرور نیز استفاده شود
تکنیک. قرار دادن

AddType application/x-httpd-eperl .phtml .eperl .epl
Action 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 la مرجح راه 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

یعنی با SetUID بیت برای ریشه کاربر، ePerl می تواند به UID/GID تغییر کند
اسکریپت مالک. اگرچه این یک ویژگی بسیار مفید برای برنامه نویسان اسکریپت است (زیرا یکی
دیگر نیازی به ساختن فایل های کمکی خوانا و فایل های موقت در جهان نیست-
قابل نوشتن!)، وقتی در مورد امنیت SetUID پارانویا هستید، می تواند برای شما خطرناک باشد
برنامه ها. اگر چنین است، ePerl را با بیت SetUID فعال نصب نکنید! به همین دلیل است
ePerl به طور پیش فرض فقط به عنوان یک فیلتر یونیکس مستقل نصب می شود که هرگز به آن نیاز ندارد
ویژگی.

برای آن دسته از ما که تصمیم گرفتیم این ویژگی برای آنها ضروری است، 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 آنها گام مردود شدن، نه UID/GID تعویض طول می کشد محل!. به علاوه (اگر
"DO_ON_FAILED_STEP" به عنوان "STOP_AND_ERROR" در تعریف شد eperl_security.h - به صورت پیش فرض نیست
به این ترتیب تعریف شده است!) ePerl می تواند به طور کامل پردازش را متوقف کند و صفحه خطای خود را نمایش دهد. این هست
برای وب مسترهای واقعا پارانوئید به صورت پیش‌فرض زمانی که هر مرحله تغییر UID/GID ناموفق بود
فقط غیرفعال است، اما ePerl به پردازش ادامه می دهد. یا می توانید برخی از آنها را غیرفعال کنید
مراحل در زمان کامپایل دیدن eperl_security.h.

پس به یاد داشته باشید که ePerl همیشه حذف می شود la موثر UID/GID، مستقل of la
زمان اجرا حالت و مستقل if ePerl است روشن به la UID/GID of la صاحب برای
تیم امنیت لاتاری دلایل ، la موثر UID/GID is همیشه نابود شده قبل از la خط is اجرا شده.

ePerl پیش پردازنده
ePerl یک پیش پردازشگر مشابه به خود ارائه می دهد CPP در سبکی که یا فعال است
به صورت دستی از طریق گزینه -P یا به طور خودکار هنگامی که ePerl در حالت (NPH-)CGI اجرا می شود. به شرح زیر
دستورالعمل ها پشتیبانی می شوند:

"#شامل مسیر"
این دستورالعمل یک دستورالعمل شامل است که می تواند برای گنجاندن هر چیزی مورد استفاده قرار گیرد،
اما در واقع برای استفاده برای گنجاندن سایر فایل های منبع ePerl طراحی شده است. در مسیر می توان
یک مسیر نسبی یا مطلق برای سیستم فایل محلی یا کاملا واجد شرایط باشد
آدرس HTTP.

در صورت مسیر مطلق، فایل مستقیماً در سیستم فایل قابل دسترسی است، در حالی که
مسیر نسبی ابتدا در فهرست کاری فعلی و سپس در همه جستجو می شود
دایرکتوری های مشخص شده از طریق گزینه -I. در حالت سوم (URL HTTP) فایل است
از طریق درخواست HTTP/1.0 در شبکه بازیابی می شود. در اینجا HTTP تغییر مسیر می دهد (کدهای پاسخ
301 و 302) نیز پشتیبانی می شوند.

توجه: در حالی که ePerl به شدت اعداد خطوط را هنگام ترجمه برستل حفظ می کند
فرمت ePerl به فرمت Perl ساده، پیش پردازنده ePerl نمی تواند این کار را انجام دهد (زیرا
پیشپردازنده که گسترش می یابد) برای این دستورالعمل. بنابراین، هر زمان که از "#include" استفاده می کنید،
به یاد داشته باشید که شماره خطوط در پیام های خطا اشتباه است.

همچنین به یک جنبه امنیتی مهم توجه کنید: زیرا می توانید هر چیزی را همانطور که هست وارد کنید
ارائه شده با این دستورالعمل، از آن فقط برای مواردی استفاده کنید که تحت مستقیم شما هستند
کنترل. از این دستورالعمل برای درج داده های خارجی استفاده نکنید، حداقل نه از خارج
وب سرورها به عنوان مثال بگویید که یک صفحه ePerl با "#include
http://www.foreigner.com/nice-page.htmlو به درخواست بعدی این صفحه شما
فایل سیستم از بین رفته است! چرا؟ زیرا خارجی تشخیص می دهد که شما صفحه او را درج کرده اید
و از ePerl استفاده می کنند و فقط یک "" ساده قرار می دهند "" در او
صفحه در مورد آن فکر کنید. هرگز استفاده از #عبارتند از برای هر گونه داده ها که IS نه زیر شما خودت
کنترل. در عوض همیشه برای چنین موقعیت هایی از «#sinclude» استفاده کنید.

"#مسیر شامل کردن"
این نوع امن «#include» است که پس از خواندن داده‌ها از آنجاست مسیر تمام
جداکننده های شروع و پایان ePerl حذف می شوند. بنابراین بلوک های خطرناک ePerl معنای خود را از دست دادند
و به متن ساده تبدیل می شوند. همیشه از این دستورالعمل زمانی که می خواهید درج کنید استفاده کنید
داده هایی که تحت کنترل شما نیستند.

"#if expr"، "#elsif expr"، "#else"، "#endif"
اینها یک ساختار "#if-[#else-]#endif" به سبک CPP را اجرا می کنند، اما با معنایی Perl.
در حالی که دستورالعمل های دیگر دستورات پیش پردازنده واقعی هستند که در آن ارزیابی می شوند
مرحله پیش پردازش، این ساختار در واقع به یک ePerl سطح پایین تبدیل می شود
ساخت، همینطور است نه در واقع در مرحله پیش پردازش ارزیابی می شود. این فقط یک است
میانبر مفید برای موارد زیر (که در آن BD جداکننده شروع و در حال حاضر استفاده می شود
ED جداکننده انتهایی):

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

مزیت این رویکرد غیرمعمول این است که شرط اگر واقعاً می تواند معتبر باشد
عبارت Perl که حداکثر انعطاف را فراهم می کند. عیب این است که شما
نمی تواند از if-construct برای تصمیم گیری واقعی پیش پردازش استفاده کند. همانطور که می بینید،
هدف طراحی فقط ارائه خلاصه ای برای ساختارهای پیچیده تر Perl بود.

"#ج"
این دستورالعمل اظهار نظر است که فقط تمام داده‌ها را تا و از جمله آن حذف می‌کند
شخصیت خط جدید از این یکی برای اظهار نظر در مورد هر چیز، حتی سایر پیش پردازنده ها استفاده کنید
دستورالعمل.

ارائه کارکرد
تا بدانید متوجه شده اید که ePerl یک تسهیلات خوب برای جاسازی کد پرل در آن فراهم می کند
هر داده ASCII اما اکنون سؤال معمولی این است: کدام کد پرل را می توان در آنها قرار داد
ePerl بلوک می کند و آیا ePerl عملکرد خاصی در داخل این بلوک های ePerl ارائه می دهد؟

پاسخ ها عبارتند از: اول، شما می توانید واقعا قرار دهید هر کد پرل را در بلوک های ePerl که هستند
معتبر به مفسر پرل ePerl با آن مرتبط شد. دوم، ePerl انجام می دهد نه ارائه هر
عملکرد ویژه در داخل این بلوک های ePerl، زیرا Perl در حال حاضر پیچیده است
کافی ؛-)

مفهوم این امر این است: زیرا شما می توانید از هر کد پرل معتبری که می توانید استفاده کنید استفاده کنید
همه ماژول های موجود Perl 5، حتی آنهایی که از اشیاء مشترک استفاده می کنند (زیرا ePerl is a
مفسر پرل، از جمله پشتیبانی DynaLoader). بنابراین، به پرل جامع مراجعه کنید
شبکه آرشیو (CPAN) از طریق http://www.perl.com/perl/CPAN و بسته های مورد علاقه خود را بردارید
که می تواند زندگی شما را آسان تر کند (هر دو از داخل اسکریپت های ساده پرل و اسکریپت های ePerl)
و فقط از ساختار "use name;"" در هر بلوک ePerl استفاده کنید تا از داخل آنها استفاده کنید
ePerl.

هنگام استفاده از ePerl به عنوان زبان اسکریپت نویسی سمت سرور، من واقعاً به شما توصیه می کنم که آن را نصب کنید
حداقل بسته ها CGI.pm (در حال حاضر آیات 2.36)، HTML-Stream (1.40) لیبنت (1.0505) و
libwww-perl (5.08). هنگامی که می خواهید تصاویری در حال پرواز نیز تولید کنید، به شما توصیه می کنم
برای نصب اضافی حداقل GD (1.14) و اندازه تصویر (2.3). مترجم ePerl در
در ارتباط با این ماژول های واقعاً پیچیده Perl 5 حداکثر امکانات را برای شما فراهم می کند
انعطاف پذیری و عملکرد به عبارت دیگر: ساخت استفاده کنید of بیشترین نرم افزار قدرت نفوذ in
la هکرها جهان of پرل as بزرگ as ممکن.

OPTIONS


-d نام=ارزش
یک متغیر Perl را در بسته "main" تنظیم می کند که می تواند از طریق $name یا بیشتر به آن ارجاع داده شود
به صراحت از طریق $main::name. فرمان

eperl-d name=value ..

در واقع معادل داشتن است



در آغاز فایل ورودی. این گزینه می تواند بیش از یک بار رخ دهد.

-D نام=ارزش
یک متغیر محیطی را تنظیم می کند که می تواند از طریق $ENV{'variable'} در داخل آن ارجاع داده شود
بلوک های پرل فرمان

eperl -D name=value ..

در واقع معادل است

صادرات نام = ارزش; ایپرل...

اما مزیت این گزینه این است که تماس گیرندگان را دستکاری نمی کند
محیط. این گزینه می تواند بیش از یک بار رخ دهد.

-B start_delimiter
رشته جداکننده شروع بلوک Perl را تنظیم می کند. از این به همراه "-E" برای تنظیم استفاده کنید
هنگام استفاده از ePerl به عنوان یک زبان ایجاد HTML آفلاین در حالی که هنوز است، جداکننده های مختلف
استفاده از آن به عنوان یک زبان اسکریپت HTML آنلاین. جداکننده های پیش فرض عبارتند از " "
برای حالت‌های CGI و «<:» و «:>» برای حالت فیلترینگ یونیکس مستقل.

تغییرات احتمالی زیادی وجود دارد که می توانید انتخاب کنید: ""<:"" و "":>"" (the
جداکننده حالت فیلتر مستقل ePerl پیش فرض)، "" "" (پیشفرض
جداکننده حالت رابط ePerl CGI)، "" "" and "" ""
(سبک زبان برنامه نویسی استاندارد HTML)، "" "" and
"" "" (HTML3.2+ با نام مستعار سبک کوگار)، "" "" و "" ""
(سبک HTML-مانند)، "" "" (سبک NeoScript و SSI) یا
زوج "" "" (سبک PHP/FI؛ اما این دیگر توصیه نمی شود زیرا می تواند
منجر به مشکلات تجزیه می شود. باید فقط برای سازگاری با ePerl قدیمی استفاده شود
نسخه های 1.x).

جداکننده‌های شروع و پایان به حروف حساس جستجو می‌شوند.

-E end_delimiter
رشته جداکننده انتهای بلوک Perl را تنظیم می کند. گزینه را نیز ببینید -B.

-i جداکننده‌های آغاز و پایان را وادار می‌کند که بدون حساسیت به حروف بزرگ و کوچک جستجو شوند. وقتی از این استفاده کنید
شما از جداکننده هایی مانند `` استفاده می کنید "..." "" یا موارد متنی دیگر.

-m حالت
این امر ePerl را مجبور می کند در یک حالت زمان اجرا خاص عمل کند. برای جزئیات بیشتر به بالا مراجعه کنید
شرح سه حالت ممکن: فیلتر مستقل (حالت"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 این تبدیل موجودیت HTML را برای بلوک های ePerl فعال می کند. این گزینه به صورت خودکار می باشد
اجباری در حالت های CGI.

مشکل حل شده در اینجا به شرح زیر است: وقتی از ePerl به عنوان سمت سرور استفاده می کنید-
Scripting-Language برای صفحات HTML و فایل های منبع ePerl خود را از طریق HTML ویرایش می کنید
ویرایشگر، این احتمال زیاد است که ویرایشگر شما برخی از کاراکترهای وارد شده را به HTML ترجمه کند
موجودیت ها، به عنوان مثال ``"<"'' تا ``"<"''. این منجر به کد پرل نامعتبر در داخل می شود
بلوک های ePerl، زیرا ویرایشگر HTML هیچ دانشی در مورد بلوک های ePerl ندارد. با استفاده از این
گزینه تجزیه کننده ePerl به طور خودکار تمام موجودیت های موجود در بلوک های ePerl را تبدیل می کند
به کاراکترهای ساده برمی گردد، بنابراین مفسر پرل دوباره بلوک های کد معتبر را دریافت می کند.

-L این کاراکتر ادامه خط """" (اسلش معکوس) را در خارج از بلوک های ePerl فعال می کند.
با استفاده از این گزینه می توانید داده های تک خطی را روی خطوط بیشتری پخش کنید. اما با احتیاط استفاده کنید: این
گزینه داده های شما را تغییر می دهد (خارج از بلوک های ePerl). معمولا ePerl واقعا عبور می کند
تمام داده های اطراف به عنوان داده خام. با این گزینه خطوط جدید به معنای جدید تبدیل می شوند.

-T این کار Perl's را فعال کرد آلوده کردن حالت جایی که مترجم پرل احتیاط های خاصی را انجام می دهد
برای جلوگیری از تله های آشکار و ظریف، چک های لکه دار نامیده می شود. دیدن perlsec(1) برای اطلاعات بیشتر
جزئیات.

-w این هشدارها را فعال می کند که در آن مفسر Perl برخی از تشخیص های دوست داشتنی را ایجاد می کند. دیدن
پرلدیاگ(1) برای جزئیات بیشتر.

-c این یک بررسی نحوی خالص را اجرا می کند که شبیه به "perl -c"" است.

-r این فایل داخلی ePerl README را در کنسول چاپ می کند.

-l این فایل داخلی ePerl LICENSE را در کنسول چاپ می کند.

-v این اطلاعات نسخه ePerl را در کنسول چاپ می کند.

-V همان گزینه -v اما علاوه بر این پارامترهای کامپایل پرل را نشان می دهد.

محیط زیست


استفاده می شود متغیر
"PATH_TRANSLATED"
این متغیر CGI/1.1 برای تعیین فایل منبع زمانی که ePerl به عنوان a کار می کند استفاده می شود
برنامه 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". زمانی که می خواهید مستقیماً به آن دسترسی داشته باشید از این یکی استفاده کنید
فایل های دیگری که در همان دایرکتوری اسکریپت از طریق وب قرار دارند، به عنوان مثال به
تصاویر مرجع و غیره

"SCRIPT_SRC_URL_FILE"
قسمت نام فایل "SCRIPT_SRC_URL". زمانی که به نام آن نیاز دارید از این یکی استفاده کنید
اسکریپت، به عنوان مثال برای ارجاع نسبی به خود از طریق URL ها. در واقع همان است
"SCRIPT_SRC_PATH_FILE"، اما برای ثبات ارائه شده است.

"SCRIPT_SRC_SIZE"
اندازه فایل اسکریپت، بر حسب بایت.

"SCRIPT_SRC_MODIFIED"
آخرین زمان تغییر اسکریپت، در ثانیه از 0 ساعت، 0 دقیقه، 0
ثانیه، 1 ژانویه 1970، زمان هماهنگ جهانی.

"SCRIPT_SRC_MODIFIED_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"
رشته شناسایی کتابخانه مفسر پرل استفاده شده.

ارائه داخلی تصاویر
تصاویر داخلی زیر از طریق URL "/url/to/nph-eperl/" قابل دسترسی هستندنام".gif":

"logo.gif"
آرم استاندارد ePerl. لطفاً این مورد را در وب سایت خود قرار ندهید.

"powered.gif"
``صفحه اصلی by ePerl 2.2'' لوگو. با خیال راحت از این در وب سایت خود استفاده کنید.

با استفاده از خدمات onworks.net به صورت آنلاین از eperl استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

  • 1
    آووگادرو
    آووگادرو
    آووگادرو یک مولکولی پیشرفته است
    ویرایشگر طراحی شده برای استفاده بین پلتفرم
    در شیمی محاسباتی، مولکولی
    مدل سازی، بیوانفورماتیک، مواد
    علم و ...
    آووگادرو را دانلود کنید
  • 2
    XMLTV
    XMLTV
    XMLTV مجموعه ای از برنامه ها برای پردازش است
    لیست های تلویزیون (tvguide) و کمک به مدیریت
    تماشای تلویزیون شما، ذخیره لیست ها در یک
    فرمت مبتنی بر XML آب و برق به وجود دارد
    از...
    XMLTV را دانلود کنید
  • 3
    ضربه زننده
    ضربه زننده
    پروژه نرم افزار رایگان Strikr. مصنوعات
    تحت یک "بر اساس قصد" منتشر شد
    مجوز دوگانه: AGPLv3 (جامعه) و
    بین المللی CC-BY-NC-ND 4.0
    (تجاری)...
    دانلود strikr
  • 5
    GIFLIB
    GIFLIB
    giflib یک کتابخانه برای خواندن و
    نوشتن تصاویر گیف API و ABI است
    سازگار با libungif که در بود
    استفاده گسترده در حالی که فشرده سازی LZW
    الگوریتم بود...
    GIFLIB را دانلود کنید
  • 6
    Alt-F
    Alt-F
    Alt-F یک منبع باز و رایگان ارائه می دهد
    سیستم عامل جایگزین برای DLINK
    DNS-320/320L/321/323/325/327L and
    DNR-322L. Alt-F دارای Samba و NFS است.
    پشتیبانی از ext2/3/4...
    Alt-F را دانلود کنید
  • بیشتر "

دستورات لینوکس

  • 1
    2ping6
    2ping6
    2ping - یک ابزار پینگ دو جهته ...
    2ping6 را اجرا کنید
  • 2
    2 تا 3-2.7
    2 تا 3-2.7
    2to3-2.7 - مبدل Python2 به Python3
    ...
    2to3-2.7 را اجرا کنید
  • 3
    cpqarrayd
    cpqarrayd
    cpqarrayd - Arraycontoller
    monitoringdaemon SYNTAX: cpqarrayd [-d]
    [-v] [-t میزبان [-t میزبان]] توضیحات:
    این برنامه قابلیت مانیتورینگ HP را دارد
    (Compaq) آررا...
    cpqarrayd را اجرا کنید
  • 4
    cproto
    cproto
    cproto - نمونه های اولیه تابع C را تولید کنید
    و تبدیل تعاریف تابع ...
    cproto را اجرا کنید
  • 5
    gapi2-fixup
    gapi2-fixup
    بدون سند - هیچ صفحه مدیریتی برای این کار وجود ندارد
    برنامه توضیحات: این برنامه انجام می دهد
    من پیج نداشته باشید این دستور را اجرا کنید
    با سوئیچ کمک برای دیدن آنچه در آن است
    میکند. برای ف...
    gapi2-fixup را اجرا کنید
  • 6
    gapi2-parser
    gapi2-parser
    بدون سند - هیچ صفحه مدیریتی برای این کار وجود ندارد
    برنامه توضیحات: این برنامه انجام می دهد
    من پیج نداشته باشید این دستور را اجرا کنید
    با سوئیچ کمک برای دیدن آنچه در آن است
    میکند. برای ف...
    gapi2-parser را اجرا کنید
  • بیشتر "

Ad