.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "PAR 1" .TH PAR 1 2026-04-05 "perl v5.42.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" par.pl \- ساخت و اجرای بایگانی‌های Perl .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" (لطفاً برای راه‌های آسان ساخت فایل‌های اجرایی خودکفا، اسکریپت‌ها یا بایگانی‌های PAR از برنامه‌های perl، دستور pp را ببینید.) .PP برای ساخت یک \fIتوزیع PAR\fR از توزیع پودمان CPAN: .PP .Vb 2 \& % par.pl \-p # make a PAR dist under the current path \& % par.pl \-p Foo\-0.01 # assume unpacked CPAN dist in Foo\-0.01/ .Ve .PP برای کار با یک \fIتوزیع PAR\fR: .PP .Vb 6 \& % par.pl \-i Foo\-0.01\-i386\-freebsd\-5.8.0.par # install \& % par.pl \-i http://foo.com/Foo\-0.01 # auto\-appends archname + perlver \& % par.pl \-i cpan://AUTRIJUS/PAR\-0.74 # uses CPAN author directory \& % par.pl \-u Foo\-0.01\-i386\-freebsd\-5.8.0.par # uninstall \& % par.pl \-s Foo\-0.01\-i386\-freebsd\-5.8.0.par # sign \& % par.pl \-v Foo\-0.01\-i386\-freebsd\-5.8.0.par # verify .Ve .PP برای استفاده از \fIHello.pm\fR موجود در \fI./foo.par\fR: .PP .Vb 2 \& % par.pl \-A./foo.par \-MHello \& % par.pl \-A./foo \-MHello # the .par part is optional .Ve .PP همان کار، اما با جستجوی \fIfoo.par\fR در \fR\f(CI@INC\fR؛ .PP .Vb 2 \& % par.pl \-Ifoo.par \-MHello \& % par.pl \-Ifoo \-MHello # ditto .Ve .PP اجرای \fItest.pl\fR یا \fIscript/test.pl\fR از درون \fIfoo.par\fR: .PP .Vb 2 \& % par.pl foo.par test.pl # looks for \*(Aqmain.pl\*(Aq by default, \& # otherwise run \*(Aqtest.pl\*(Aq .Ve .PP برای ساخت یک اسکریپت خودکفا حاوی یک فایل PAR: .PP .Vb 2 \& % par.pl \-O./foo.pl foo.par \& % ./foo.pl test.pl # same as above .Ve .PP جهت جاسازی پودمان‌های غیرپایه‌ای (non\-core) و اشیاء اشتراکی لازم برای اجرای PAR (مانند \f(CW\*(C`Zlib\*(C'\fR، \f(CW\*(C`IO\*(C'\fR، \f(CW\*(C`Cwd\*(C'\fR و غیره)، از پرچم \fB\-b\fR استفاده کنید: .PP .Vb 2 \& % par.pl \-b \-O./foo.pl foo.par \& % ./foo.pl test.pl # runs anywhere with core modules installed .Ve .PP اگر مایلید پودمان‌های پایه‌ای (\fIcore\fR) نیز همراه آن جاسازی شوند، به جای آن از پرچم \fB\-B\fR استفاده کنید: .PP .Vb 2 \& % par.pl \-B \-O./foo.pl foo.par \& % ./foo.pl test.pl # runs anywhere with the perl interpreter .Ve .PP این ویژگی به‌ویژه هنگام ساخت فایل‌های اجرایی باینری مستقل کاربرد دارد؛ برای جزئیات pp را ببینید. .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" این دستور مستقل، تقریباً همان قابلیت‌های \f(CW\*(C`perl \-MPAR\*(C'\fR را ارائه می‌دهد، با این تفاوت که فایل‌های از پیش بارگذاری‌شدهٔ \fI.par\fR را به جای \f(CW\*(C`\-MPAR=foo.par\*(C'\fR، از طریق \f(CW\*(C`\-Afoo.par\*(C'\fR دریافت می‌کند. .PP علاوه بر این، به شما امکان می‌دهد یک توزیع CPAN را به یک توزیع PAR تبدیل کرده و چنین توزیع‌هایی را مدیریت کنید. برای اطلاعات بیشتر دربارهٔ توزیع‌های PAR، به PAR::Dist مراجعه کنید. .SS "بارگذار باینری PAR (parl)" .IX Subsection "Binary PAR loader (parl)" اگر کامپایلر C داشته باشید، یا یک بستهٔ باینری از پیش ساخته‌شدهٔ \fBPAR\fR برای پلتفرم شما موجود باشد، نسخهٔ باینری \fBpar.pl\fR نیز به‌طور خودکار تحت نام \fBparl\fR نصب خواهد شد. می‌توانید از آن برای اجرای فایل‌های \fI.par\fR استفاده کنید: .PP .Vb 3 \& # runs script/run.pl in archive, uses its lib/* as libraries \& % parl myapp.par run.pl # runs run.pl or script/run.pl in myapp.par \& % parl otherapp.pl # also runs normal perl scripts .Ve .PP با این حال، اگر بایگانی \fI.par\fR شامل فایل \fImain.pl\fR یا \fIscript/main.pl\fR باشد، آن فایل به جای آن اجرا می‌شود: .PP .Vb 1 \& % parl myapp.par run.pl # runs main.pl, with \*(Aqrun.pl\*(Aq as @ARGV .Ve .PP در نهایت، گزینهٔ \f(CW\*(C`\-O\*(C'\fR یک فایل اجرایی باینری مستقل از یک فایل PAR ایجاد می‌کند: .PP .Vb 2 \& % parl \-B \-Omyapp myapp.par \& % ./myapp # run it anywhere without perl binaries .Ve .PP با پرچم \f(CW\*(C`\-\-par\-options\*(C'\fR، باینری‌های تولیدشده می‌توانند مانند \f(CW\*(C`parl\*(C'\fR برای بسته‌بندی باینری‌های جدید عمل کنند: .PP .Vb 2 \& % ./myapp \-\-par\-options \-Omyap2 myapp.par # identical to ./myapp \& % ./myapp \-\-par\-options \-Omyap3 myap3.par # now with different PAR .Ve .SS "قالب فایل اجرایی مستقل" .IX Subsection "Stand-alone executable format" قالب فایل اجرایی مستقل، صرفاً حاصل الحاق عناصر زیر به یکدیگر است: .IP \(bu 4 خود فایل اجرایی .Sp چه در قالب متن ساده (\fIpar.pl\fR) و چه در قالب اجرایی محلی سیستم (\fIparl\fR یا \fIparl.exe\fR). .IP \(bu 4 هر تعداد فایل تعبیه‌شده .Sp این فایل‌ها معمولاً برای راه‌اندازی اولیهٔ وابستگی‌های گوناگون XS در PAR استفاده می‌شوند. هر بخش شامل موارد زیر است: .RS 4 .ie n .IP "رشتهٔ جادویی """"FILE""""" 4 .el .IP "رشتهٔ جادویی ""\f(CWFILE\fR""" 4 .IX Item "The magic string ""FILE""" .PD 0 .ie n .IP "طول نام فایل در قالب pack(\*(AqN\*(Aq) به علاوه ۹" 4 .el .IP "طول نام فایل در قالب \f(CWpack(\*(AqN\*(Aq)\fR به علاوه ۹" 4 .IX Item "Length of file name in pack('N') format plus 9" .IP "۸ بایت هش CRC32 کدگذاری‌شده به صورت هگزادسیمال از محتوای فایل" 4 .IX Item "8 bytes of hex-encoded CRC32 of file content" .ie n .IP "یک اسلش منفرد (""""/"""")" 4 .el .IP "یک اسلش منفرد (""\f(CW/\fR"")" 4 .IX Item "A single slash (""/"")" .IP "نام فایل (بدون مسیر)" 4 .IX Item "The file name (without path)" .ie n .IP "طول فایل در قالب pack(\*(AqN\*(Aq)" 4 .el .IP "طول فایل در قالب \f(CWpack(\*(AqN\*(Aq)\fR" 4 .IX Item "File length in pack('N') format" .IP "محتوای فایل (فشرده‌نشده)" 4 .IX Item "The file's content (not compressed)" .PD .RE .RS 4 .RE .IP \(bu 4 یک فایل PAR .Sp این مورد تنها یک فایل zip است که با رشتهٔ جادویی "\f(CW\*(C`PK\e003\e004\*(C'\fR" شروع می‌شود. .IP \(bu 4 بخش پایانی .Sp نام حافظهٔ نهان (cache) از پیش محاسبه‌شده. یک رشتهٔ pack(\*(AqZ40\*(Aq) از مقدار \-T (\-\-tempcache) یا هش فایل، که در ادامهٔ آن \f(CW\*(C`\e0CACHE\*(C'\fR می‌آید. هش فایل با Digest::SHA محاسبه می‌شود. .Sp یک عدد pack(\*(AqN\*(Aq) از طول کل بخش‌های FILE و PAR، که پس از آن یک رشتهٔ جادویی ۸ بایتی قرار دارد: "\f(CW\*(C`\e012PAR.pm\e012\*(C'\fR". .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" PAR, PAR::Dist, parl, pp .SH "نویسندگان (AUTHORS)" .IX Header "AUTHORS" Audrey Tang , Steffen Mueller .PP می‌توانید به فهرست رایانامه در بنویسید، یا برای شرکت در گفتگوها یک رایانامهٔ خالی به ارسال کنید. بایگانی‌های فهرست رایانامه در یا در دسترس هستند. .PP لطفاً گزارش باگ‌ها را به ارسال کنید. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر ۲۰۰۲\-۲۰۰۹ توسط Audrey Tang . .PP مطابق با مادهٔ هشتم مجوز Artistic License، نه این برنامه و نه برنامهٔ مرتبط parl هیچ‌گونه محدودیت مجوزی را بر فایل‌های تولیدشده توسط اجرای خود اعمال نمی‌کنند: .PP .Vb 5 \& "Aggregation of this Package with a commercial distribution is \& always permitted provided that the use of this Package is embedded; \& that is, when no overt attempt is made to make this Package\*(Aqs \& interfaces visible to the end user of the commercial distribution. \& Such use shall not be construed as a distribution of this Package." .Ve .PP بنابراین، تا زمانی که کتابخانه‌های شخص ثالث بسته‌بندی‌شده نیز تحت مجوز Artistic License در دسترس باشند، شما کاملاً مجازید هرگونه مجوزی را روی فایل اجرایی حاصل قرار دهید. .PP این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت همان شرایط خود Perl بازتوزیع کرده یا تغییر دهید. .PP \fILICENSE\fR را ببینید.