Perl ซึ่งย่อมาจาก "Practical Extraction and Reporting Language" เป็นภาษาการเขียนโปรแกรมระดับสูงที่มีวัตถุประสงค์ทั่วไป ซึ่งเป็นที่รู้จักในด้านความสามารถในการประมวลผลข้อความ พัฒนาโดย Larry Wall ในช่วงปลายทศวรรษ 1980 Perl ได้เติบโตขึ้นเป็นเครื่องมือที่หลากหลายสำหรับการเขียนสคริปต์ การจัดการข้อมูล และการพัฒนาเว็บ มักถูกเรียกว่า "มีดพกสวิส" ของภาษาการเขียนโปรแกรม Perl มีลักษณะเด่นที่ความยืดหยุ่น ไลบรารีที่กว้างขวาง และชุดฟังก์ชันในตัวที่หลากหลายซึ่งช่วยให้นักพัฒนาสามารถจัดการกับงานที่ซับซ้อนได้ด้วยโค้ดที่น้อยที่สุด
Perl ถูกสร้างขึ้นโดย Larry Wall ในปี 1987 เพื่อเป็นทางออกในการแก้ไขข้อบกพร่องของเครื่องมือที่มีอยู่สำหรับการประมวลผลข้อความและการสร้างรายงาน โดยออกแบบมาในตอนแรกสำหรับงานการบริหารระบบ Unix Perl ได้รับความนิยมอย่างรวดเร็วจากความสามารถในการรวมฟังก์ชันการทำงานจากภาษาการเขียนโปรแกรมต่างๆ การออกแบบของมันได้รับแรงบันดาลใจจากภาษาต่างๆ เช่น C, sed, awk และการเขียนสคริปต์เชลล์
ตลอดหลายปีที่ผ่านมา Perl ได้พัฒนาอย่างมีนัยสำคัญ Perl 5 ซึ่งออกในปี 1994 ได้แนะนำการปรับปรุงหลายอย่าง เช่น ฟีเจอร์การเขียนโปรแกรมเชิงวัตถุและระบบโมดูลที่แข็งแกร่ง ทำให้ Perl มีสถานะที่มั่นคงในภูมิทัศน์การเขียนโปรแกรม เครือข่าย Comprehensive Perl Archive Network (CPAN) ถูกจัดตั้งขึ้นเพื่อให้บริการที่เก็บโมดูล Perl แบบรวมศูนย์ ซึ่งช่วยขยายความสามารถของมันต่อไป
Perl 6 ซึ่งต่อมาเป็นที่รู้จักในชื่อ Raku ถูกออกแบบมาเป็นภาษาน้องสาวของ Perl 5 โดยแนะนำไวยากรณ์และฟีเจอร์ใหม่ การเปลี่ยนจาก Perl เป็น Raku เป็นไปอย่างราบรื่นสำหรับนักพัฒนาหลายคน จนถึงปี 2023 Perl ยังคงมีชุมชนที่มีชีวิตชีวา และแม้จะเผชิญกับการแข่งขันจากภาษาที่ใหม่กว่า แต่ก็ยังคงมีความเกี่ยวข้องในด้านการประมวลผลข้อความ การบริหารระบบ และการพัฒนาเว็บ
Perl ใช้สัญลักษณ์ $
เพื่อระบุตัวแปรสเกลาร์ ซึ่งสามารถเก็บค่าเดียวได้
my $name = "John Doe";
my $age = 30;
อาร์เรย์จะถูกระบุด้วย @
ในขณะที่แฮช (อาร์เรย์เชิงสัมพันธ์) ใช้ %
my @colors = ("red", "green", "blue");
my %fruit_color = ("apple" => "red", "banana" => "yellow");
Perl รวมโครงสร้างควบคุมเช่น if
, unless
, และลูปเช่น for
, foreach
, และ while
if ($age > 18) {
print "Adult\n";
}
foreach my $color (@colors) {
print "$color\n";
}
Perl เป็นที่รู้จักในด้านความสามารถในการใช้ regex ที่ทรงพลัง ช่วยให้สามารถจับคู่และจัดการกับสตริงที่ซับซ้อนได้
if ($name =~ /Doe$/) {
print "Last name is Doe\n";
}
Perl รองรับฟังก์ชันย่อย ช่วยให้สามารถนำโค้ดกลับมาใช้ใหม่และการเขียนโปรแกรมแบบโมดูล
sub greet {
my ($name) = @_;
return "Hello, $name!";
}
print greet("Alice");
ฟังก์ชันของ Perl แสดงความไวต่อบริบท โดยทำงานแตกต่างกันตามบริบทที่ถูกเรียกใช้ (สเกลาร์หรือรายการ)
my $count = @colors; # บริบทสเกลาร์
my @copy = @colors; # บริบทรายการ
Perl อนุญาตให้ตัวแปรถูกแทรกโดยตรงภายในสตริงที่มีเครื่องหมายคำพูดคู่
print "My name is $name\n";
Perl ทำให้การจัดการไฟล์ง่ายขึ้นผ่านฟังก์ชันในตัว เช่น open
, read
, และ close
open(my $fh, '<', 'file.txt') or die "Cannot open file: $!";
while (my $line = <$fh>) {
print $line;
}
close($fh);
Perl ใช้บล็อก eval
สำหรับการจัดการข้อผิดพลาด ช่วยให้สามารถจับข้อยกเว้นได้
eval {
die "An error occurred!";
};
if ($@) {
print "Caught error: $@";
}
Perl รองรับการเขียนโปรแกรมเชิงวัตถุด้วยแพ็คเกจและคลาส
package Animal;
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
return $self;
}
Perl เป็นภาษาที่ถูกตีความเป็นหลัก โดยปกติจะถูกดำเนินการผ่านตัวแปล Perl การใช้งานที่พบบ่อยที่สุดคือ Perl 5 ซึ่งมีให้บริการบนหลายแพลตฟอร์มรวมถึง Windows, Linux และ macOS ในปีหลังๆ มีการพัฒนาตัวแปรเช่น Strawberry Perl และ ActivePerl เพื่อทำให้การติดตั้งบนระบบ Windows ง่ายขึ้น
แม้ว่า Perl จะสามารถพัฒนาในโปรแกรมแก้ไขข้อความใดๆ แต่ก็มีหลาย IDE และโปรแกรมแก้ไขข้อความที่ให้การสนับสนุนที่ดีขึ้น รวมถึง:
ในการสร้างโปรเจกต์ Perl นักพัฒนามักจะรวมไฟล์ Makefile
หรือ Build.PL
ซึ่งกำหนดความต้องการและตัวเลือกการกำหนดค่าของโปรเจกต์
perl Makefile.PL
make
make test
make install
Perl ถูกใช้ในหลายโดเมน รวมถึง:
ปรัชญาการออกแบบของ Perl เน้นความเป็นจริงและความยืดหยุ่น ซึ่งทำให้แตกต่างจากภาษาการเขียนโปรแกรมอื่นๆ หลายภาษา:
เมื่อแปลโค้ด Perl ไปยังภาษาอื่น ควรพิจารณาดังต่อไปนี้:
แม้ว่าจะไม่มีเครื่องมือการแปลจากแหล่งข้อมูลสู่แหล่งข้อมูลที่แพร่หลายเฉพาะสำหรับ Perl แต่เครื่องมือทั่วไปบางอย่างเช่น parrot
(เครื่องเสมือนที่ใช้สำหรับภาษาระดับสูง) และ transpilers อาจช่วยอำนวยความสะดวกในกระบวนการนี้ สำหรับแอปพลิเคชันเฉพาะ อาจจำเป็นต้องมีการปรับโครงสร้างด้วยตนเองเพื่อให้ตรงกับสำนวนของภาษาเป้าหมาย