پرل، که مخفف "زبان استخراج و گزارشگیری عملی" است، یک زبان برنامهنویسی سطح بالا و چندمنظوره است که به خاطر قابلیتهای پردازش متن خود شناخته شده است. این زبان توسط لری وال در اواخر دهه 1980 توسعه یافت و به ابزاری چندمنظوره برای اسکریپتنویسی، دستکاری دادهها و توسعه وب تبدیل شده است. پرل اغلب به عنوان "چاقوی سوئیسی" زبانهای برنامهنویسی شناخته میشود و به خاطر انعطافپذیری، کتابخانههای گسترده و مجموعهای غنی از توابع داخلی که به توسعهدهندگان اجازه میدهد تا وظایف پیچیده را با حداقل کد انجام دهند، شناخته میشود.
پرل در سال 1987 توسط لری وال به عنوان راهحلی برای رفع کمبودهای ابزارهای موجود برای پردازش متن و تولید گزارش ایجاد شد. این زبان در ابتدا برای وظایف مدیریت سیستم یونیکس طراحی شده بود و به سرعت به خاطر توانایی خود در ادغام قابلیتهای زبانهای مختلف برنامهنویسی محبوبیت پیدا کرد. طراحی آن از زبانهایی مانند C، sed، awk و اسکریپتنویسی شل الهام گرفته شده است.
در طول سالها، پرل به طور قابل توجهی تکامل یافته است. پرل 5، که در سال 1994 منتشر شد، بهبودهای زیادی از جمله ویژگیهای برنامهنویسی شیءگرا و یک سیستم ماژول قوی را معرفی کرد و جایگاه پرل را در دنیای برنامهنویسی تثبیت کرد. شبکه آرشیو جامع پرل (CPAN) برای ارائه یک مخزن مرکزی از ماژولهای پرل تأسیس شد که قابلیتهای آن را بیشتر گسترش داد.
پرل 6، که بعداً به عنوان راکو شناخته شد، به عنوان یک زبان خواهر برای پرل 5 طراحی شد و نحو و ویژگیهای جدیدی را معرفی کرد. انتقال از پرل به راکو برای بسیاری از توسعهدهندگان بدون مشکل بود. از سال 2023، پرل همچنان دارای یک جامعه فعال است و با وجود رقابت از زبانهای جدیدتر، در پردازش متن، مدیریت سیستم و توسعه وب همچنان مرتبط باقی مانده است.
پرل از نماد $
برای نشان دادن متغیرهای اسکالر استفاده میکند که میتوانند مقادیر تکی را نگه دارند.
my $name = "جان دو";
my $age = 30;
آرایهها با @
نشان داده میشوند، در حالی که هشها (آرایههای وابسته) از %
استفاده میکنند.
my @colors = ("قرمز", "سبز", "آبی");
my %fruit_color = ("سیب" => "قرمز", "موز" => "زرد");
پرل شامل ساختارهای کنترلی مانند if
، unless
و حلقههایی مانند for
، foreach
و while
است.
if ($age > 18) {
print "بزرگسال\n";
}
foreach my $color (@colors) {
print "$color\n";
}
پرل به خاطر قابلیتهای قدرتمند regex خود شناخته شده است که امکان تطابق و دستکاری رشتههای پیچیده را فراهم میکند.
if ($name =~ /Doe$/) {
print "نام خانوادگی Doe است\n";
}
پرل از زیرروالها پشتیبانی میکند که امکان استفاده مجدد از کد و برنامهنویسی مدولار را فراهم میآورد.
sub greet {
my ($name) = @_;
return "سلام، $name!";
}
print greet("آلیس");
توابع پرل حساسیت به زمینه را نشان میدهند و بسته به زمینهای که در آن فراخوانی میشوند (اسکالر یا لیست) رفتار متفاوتی دارند.
my $count = @colors; # زمینه اسکالر
my @copy = @colors; # زمینه لیست
پرل اجازه میدهد که متغیرها به طور مستقیم درون رشتههای دوتایی نقل قول شده درونریزی شوند.
print "نام من $name است\n";
پرل مدیریت فایل را از طریق توابع داخلی مانند open
، read
و close
ساده میکند.
open(my $fh, '<', 'file.txt') or die "نمیتوان فایل را باز کرد: $!";
while (my $line = <$fh>) {
print $line;
}
close($fh);
پرل از بلوک eval
برای مدیریت خطا استفاده میکند و اجازه میدهد استثناها ضبط شوند.
eval {
die "یک خطا رخ داده است!";
};
if ($@) {
print "خطا گرفته شد: $@";
}
پرل از برنامهنویسی شیءگرا با بستهها و کلاسها پشتیبانی میکند.
package Animal;
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
return $self;
}
پرل عمدتاً یک زبان مفسر است که معمولاً از طریق مفسر پرل اجرا میشود. رایجترین پیادهسازی پرل 5 است که بر روی چندین پلتفرم از جمله ویندوز، لینوکس و macOS در دسترس است. در سالهای اخیر، نسخههایی مانند Strawberry Perl و ActivePerl برای سادهسازی نصب بر روی سیستمهای ویندوزی ظهور کردهاند.
در حالی که پرل میتواند در هر ویرایشگر متنی توسعه یابد، چندین IDE و ویرایشگر متنی پشتیبانی بهتری ارائه میدهند، از جمله:
برای ساخت یک پروژه پرل، توسعهدهندگان معمولاً یک فایل Makefile
یا Build.PL
را شامل میشوند که وابستگیها و گزینههای پیکربندی پروژه را تعریف میکند.
perl Makefile.PL
make
make test
make install
پرل به طور گستردهای در حوزههای مختلف استفاده میشود، از جمله:
فلسفه طراحی پرل بر عملی بودن و انعطافپذیری تأکید دارد که آن را از چندین زبان برنامهنویسی دیگر متمایز میکند:
هنگام ترجمه کد پرل به زبان دیگر، موارد زیر را در نظر بگیرید:
در حالی که ابزارهای ترجمه کد به کد خاصی برای پرل به طور گسترده وجود ندارد، برخی ابزارهای عمومی مانند parrot
(یک ماشین مجازی برای زبانهای سطح بالا) و transpilerها میتوانند فرآیند را تسهیل کنند. برای برنامههای خاص، ممکن است نیاز به بازسازی دستی باشد تا با اصطلاحات زبان هدف مطابقت داشته باشد.