பெர்ள்
{{Infobox programming language
 | name                   = பெர்ள்
 | logo                   = [[படிமம்:Programming-republic-of-perl.png]]
 | paradigm               = [[Multi-paradigm]]
 | year                   = 1987
 | designer               = [[Larry Wall]]
 | latest_release_version = 5.30.0
 | latest_release_date    = {{release date|2019|05|22}}
 | turing-complete        = ஆம்
 | typing = Dynamic
 | influenced_by          = [[AWK (programming language)|AWK]], [[பேசிக் (நிரல் மொழி)]], [[BASIC-PLUS]], [[சி (நிரலாக்க மொழி)|சி]], [[சி++]], [[லிஸ்ப்]], [[பாசுக்கல் (நிரலாக்க மொழி)|பாசுக்கல்]], [[sed]], [[Unix shell]]
 | influenced             = [[பைத்தான்]], [[பிஎச்பி]], [[ரூபி]], [[ECMAScript]], [[Dao (programming language)|Dao]], [[Windows PowerShell]]
 | operating_system       = [[Cross-platform]]
 | license                = [[குனூ பொதுமக்கள் உரிமம்]], [[Artistic License]]
 | website                = http://www.perl.org/
 }}
 '''பெர்ள்''' (''Perl'') ஒரு கணினி நிரலாக்க மொழி. இது ஒரு மேல் நிலை, இயங்கியல், [[படிவ நிரலாக்க மொழி]] வகையைச் சார்ந்தது. இதன் முதல் பதிப்பு 1987-ம் ஆண்டு ''ஆக்கர் லாரி வோல்'' (Larry Wall) என்பவரால் வெளியிடப்பட்டது. 1988 இல் இரண்டாவது பதிப்பும் 1989 இல் மூன்றாவது பதிப்பும் வெளியானது, பெர்ள் 6 விரைவில் வெளி வர இருக்கிறது. உரை ஆவணங்களை பகுப்பாய்வு செய்ய உதவும் [[சுருங்குறித்தொடர்]]களை பெர்ள் தொடக்கத்திலியே மொழியின் ஒரு கூறாக ஏதுவாக்கியது.  உரை ஆவணப் பகுப்பாய்வு, கணினி நிர்வாகம், வலைப்பின்னல் நிரலாக்கம், தரவுதள வலை செயலிகள் வடிவமைப்பு போன்ற பல தேவைகளுக்கு பெர்ள் பயன்படுகிறது.
 இது ஒரு [[கட்டற்ற மென்பொருள்|கட்டற்ற மென்பொருளாகும்]]. [[குனு]] கட்டற்ற ஆவண உரிமத்தின் கீழும் வெளியிடப்படுகிறது.
 
 == மொழியின் பண்புகள் ==
 இது [[சி நிரலாக்க மொழி|சி]], ஆக், செட், பேசிக் போன்ற பல [[நிரல் மொழிகள்|நிரல் மொழிகளின்]] வசதிகளையும் தன்மைகளையும் உள்வாங்கி உருவாக்கப்பட்டது.&lt;ref name=&quot;perltimeline&quot;&gt;{{cite web | url=http://history.perl.org/PerlTimeline.html | title=The Timeline of Perl and its Culture (v3.0_0505) | author=Ashton, Elaine | year=1999 | access-date=2007-09-13 | archive-date=2013-01-11 | archive-url=https://web.archive.org/web/20130111100906/http://history.perl.org/PerlTimeline.html |url-status=dead }}&lt;/ref&gt; இருப்பினும் [[எழுத்துத்தொடர் (கணினி)|எழுத்துத்தொடர்களை]](''strings'') எளிதில் கையாளும் வசதிகள் மற்றும் ஒத்த மொழிகளில் இருந்த சில கட்டுக்கள் இல்லாதிருத்தல் ஆகியவற்றால் இது பெரிதும் பயன்படுத்தப்படத் துவங்கியது.&lt;ref name=&quot;programmingperl&quot;&gt;{{cite book | title=Programming Perl, Third Edition | author=[[Larry Wall|Wall, Larry]], [[Tom Christiansen]] and [[Jon Orwant]] | publisher=O'Reilly | month=July | year=2000 | ISBN=0-596-00027-8}}&lt;/ref&gt;
 
 பின்னர், இதன் கட்டற்ற தன்மையும் எவர் வேண்டுமானாலும் பங்களிக்கலாம் என்ற உரிமமும்&lt;ref&gt;Usenet post, May 10th 1997, with ID 199705101952.MAA00756@wall.org.&lt;/ref&gt; அதற்கு வசதியான&lt;ref&gt;லாரி வால்: &quot;பெர்ள் 5-ல் அறிமுகப்படுத்தப்பட்ட பகுதிக்கூறு கட்டமைப்பு பெர்ள் பண்பாட்டை வளர்ப்பதற்காவே அன்றி பெர்ள் கருனியை வளர்ப்பதற்கல்ல.&quot; (''&quot;The whole intent of Perl 5's module system was to encourage the growth of Perl culture rather than the Perl core.&quot;'') Usenet post, May 10th 1997, with ID 199705101952.MAA00756@wall.org.&lt;/ref&gt; பகுதிக்கூறு கட்டமைப்பும் (''modular architecture'') இதை ஒரு வளர்ந்த மேம்பட்ட நிரல் மொழியாக உருமாற்றியது. தற்போது ஏறத்தாழ அனைத்து பெரிய நிறுவனங்களிலும் ஏதேனும் ஒரு வடிவில் இது பயன்படுத்தப்படுகிறது.
 
 இதன் உருவாக்குநர் மற்றும் துவக்க கால பங்களிப்போரின் சாய்வின் விளைவாக இது மனிதர்கள் பயன்படுத்தும் இயல்மொழிகளின் [[மொழியியல்|மொழியியலைப்]] பல இடங்களில் பின்பற்றுகிறது.&lt;ref&gt;{{Cite web
 | last = லாரி வால்
 | title = perl.com: The Culture of Perl
 | accessdate = 2010-05-10
 | url = http://www.perl.com/pub/a/1997/wall/keynote.html
 | quote = Linguistic Beliefs: This brings me to my linguistic beliefs, and you'll probably recognize a lot of these in the design of Perl, and more particularly in the design of Perl Culture.
 }}&lt;/ref&gt; [[அணி இலக்கணம்|அணி]]கள்கூட இதில் உண்டு! இதனாலும், &quot;எளிதானவற்றை இன்னும் எளிமையாக்குதல், முடியாதவற்றையும் கூடச் செய்யுதல்&quot; மற்றும் &quot;எதையும் பல வழிகளில் நிறைவேற்றும் வசதி&quot; போன்ற கொள்கைகளினாலும், இது சற்றே மாறுபட்டு நிற்கிறது. பொதுவாக நிரல்மொழிகள் &quot;சொல்வதைச் செய்&quot;யும் மொழிகளாக இருக்குமிடத்தில் பெர்ள் &quot;சொல்ல விழைந்ததைச் செய்&quot;யும் மொழியாக உள்ளது. இந்த நோக்கில் இதில் பல வசதிகள் உள்ளன. எடுத்துக்காட்டாக [[தாமாகவுயிர்ப்பித்தல்]] போன்ற வசதிகள் பிற நிரல்மொழிகளில் அரிது.
 
 === தொகுப்பி ===
 பெர்ள் எளிமையான notepad, Crimson Editor போன்றவற்றிலும் தொகுக்கலாம் இருப்பினும் DzSoft Perl Editor போன்றவை கூடிய ஒத்துழைப்பு தரும். எடுத்துக்காட்டாக அவை ஒரு நிரலில் உள்ள தரவு இனங்களை, செயலிகளை இடப்பக்கக் கட்டத்தில் காட்டும். Regular expressions சோதனை செய்ய உதவும். மேலும் களை எடுக்கவும் உதவும்.
 
 == மொழி அமைப்பு ==
 === தரவினங்கள் ===
 பெர்ள் மொழியில் ஐந்து தரவு இனங்கள் பரவலாய பயன்படுகின்றன. அவையானவை
 * திசையிலிகள் (scalars)
 * அணி (array)
 * hash
 * கோப்புப் பிடி - file handle
 * செயலி - subroutine
 
 &lt;syntaxhighlight lang=&quot;perl&quot;&gt;
 $foo # a scalar
 @foo # an array
 %foo # a hash
 FOO # a file handle
 &amp;FOO # a constant (but the &amp; is optional)
 &amp;foo # a subroutine (but the &amp; is optional)
 &lt;/syntaxhighlight&gt;
 
 ==== hash ====
 &lt;div style=&quot;float:left; width:50%;&quot;&gt;
 &lt;pre&gt;
 #!/usr/bin/perl
 
 my %req_command  = (Make =&gt; 'Juniper',
                     OS_type =&gt; 'JunOS',
                     Data_req =&gt; 'Serial num',
                     Command =&gt; 'Show chassis hardware details');
 
 my @hash_keys = keys (%req_command);
 
 foreach my $key (@hash_keys){
         my $value = $req_command{$key};
         print &quot;$key =&gt; $value \n&quot;;
         }
 &lt;/pre&gt;
 &lt;/div&gt;
 &lt;div style=&quot;float:right; width:50%;&quot;&gt;
 &lt;pre&gt;
 Command =&gt; Show chassis hardware details
 Data_req =&gt; Serial num
 OS_type =&gt; JunOS
 Make =&gt; Juniper
 &lt;/pre&gt;
 &lt;/div&gt;
 {{clear}}
 
 === தெரிவு ===
 
  '''if''' ( ''expr'' ) ''block''
  '''if''' ( ''expr'' ) ''block'' '''else''' ''block''
  '''if''' ( ''expr'' ) ''block'' '''elsif''' ( ''expr '' ) ''block'' … '''else''' ''block''
 
  '''unless''' ( ''expr'' ) ''block''
  '''unless''' ( ''expr'' ) ''block'' '''else''' ''block''
  '''unless''' ( ''expr'' ) ''block'' '''elsif''' ( ''expr '' ) ''block'' … '''else''' ''block''
 
 === சுற்றுக்கள் ===
 ==== For சுற்று ====
 &lt;pre&gt;
 for (starting assignment; test condition; increment)
 {
  code to repeat
 }
 
 #எ.கா:
 
 for ($i = 1; $i&lt; 10; $i++){
       print $i;
       }
 &lt;/pre&gt;
 
 ==== While சுற்று ====
 &lt;pre&gt;
 while (test condition)
 {
  code to repeat
 }
 
 #எ.கா:
 
 $i = 1;
 while ($i &lt; 10){
         print $i;
         $1++;
         }
 &lt;/pre&gt;
 
 ==== For each சுற்று ====
 &lt;pre&gt;
 foreach variable_name (array_name)
 {
  code to repeat
 }
 
 #hash
 %coins = ( &quot;Quarter&quot; , 25,
            &quot;Dime&quot; ,    10,
            &quot;Nickel&quot;,    5 );
 
 # get the key value pair
 foreach $key (sort keys %coins) {
      print &quot;$key: $coins{$key}&lt;br /&gt;&quot;;
 }
 
 &lt;/pre&gt;
 
 === செயலி ===
 &lt;pre&gt;
 $a = 10;
 $b = 10;
 
 add($a, $b);
 
 sub add{
     $c = $a + $b;
     print &quot;This sum is: \n&quot;;
     print $c;
     }
 &lt;/pre&gt;
 
 === கோப்பைக் கையாளல் ===
 ==== வாசித்தல் ====
 &lt;pre&gt;
 $file = &quot;test_file.txt&quot;;
 open (FH_test_file, &quot;&lt;$file&quot;) or die &quot;Cannot Open File \n&quot;;
 
     while ($line = &lt;FH_test_file&gt;){
             print $line, &quot;&lt;br /&gt;&quot;;
             }
 close (FH_test_file);
 &lt;/pre&gt;
 
 ==== எழுதுதல் ====
 &lt;pre&gt;
 $file = &quot;test_file_b.txt&quot;;
 open (FH_test_file, &quot;&gt;$file&quot;) or die &quot;Cannot Open File \n&quot;;
 print FH_test_file &quot;This will be written to the file&quot;;
 close FH_test_file;
 &lt;/pre&gt;
 
 === சுருங்குறித்தொடர் ===
 ==== பொருத்தி பார் ====
 &lt;pre&gt;
 $test_string = &quot;This is a test sentence&quot;;
 if ($test_string =~ m/test/i){
      print &quot;yes&quot;;
      }
 &lt;/pre&gt;
 
 ==== மாற்றி பொருத்து ====
 &lt;pre&gt;
 $test_string = &quot;This is a test sentence&quot;;
 $test_string =~ s/e/**/g;
 print $test_string;
 &lt;/pre&gt;
 
 == பெர்ள்ளில் பொருள் நோக்கு நிரலாக்கம் ==
 === முதன்மை - testclass.pl ===
 &lt;pre&gt;
 #!/usr/bin/perl
 
 # Use the pacakge
 use object_a;
 
 # Define new insance of object_a
 my $ob_a = new object_a;
 
 # Intialize data values
 $ob_a -&gt; data1(&quot;abc&quot;);
 $ob_a -&gt; data2(&quot;123&quot;);
 
 # Print anc check
 print $ob_a-&gt;data1;
 print &quot;&lt;br /&gt;&quot;;
 print $ob_a-&gt;data2;
 print &quot;&lt;br /&gt;&quot;;
 
 # Use method1
 $ob_a-&gt;method1(&quot;A Test print&quot;);
 &lt;/pre&gt;
 
 === வகுப்பு object_a.pm ===
 &lt;pre&gt;
 package object_a;
 
 # Constructor
 sub new {
         my ($class, %param) = @_;
 
         my ($self) = {
              _data1 =&gt; undef,
              _data2 =&gt; undef,
         };
         bless ($self, $class);
         return $self;
         }#END Constructor
 
 #Accessor method for data1
 sub data1 {
         my ($self, $data1) = @_;
         $self-&gt;{_data1} = $data1 if defined($data1);
         return $self-&gt;{_data1};
         };
 #Accessor method for data2
 sub data2 {
         my ($self, $data2) = @_;
         $self-&gt;{_data2} = $data2 if defined($data2);
         return $self-&gt;{_data2};
         };
 #Method of object_a
 sub method1 {
        my ($self, $log_data) = @_;
        print $log_data;
        }
 1;
 &lt;/pre&gt;
 
 === வெளியீடு ===
 &lt;pre&gt;
 abc
 123
 A Test print
 &lt;/pre&gt;
 
 == இதர தகவல்கள் ==
 === உள்ளமைவு கோப்பு ===
 ஒவ்வொரு மென்பொருளுக்கும் அதற்கான உள்ளமைவு கோப்பை உருவாக்குவது நன்று.
 
 projectConfig.pm
 &lt;pre&gt;
 package projectConfig;
 
 $projectConfig::var1 = &quot;data123&quot;;
 $projectConfig::var2 = &quot;data456&quot;;
 &lt;/pre&gt;
 
 பயன்படுத்தல்
 &lt;pre&gt;
 #!/usr/bin/perl
 use projectConfig;
 
 $configdata = $projectConfig::var1;
 print $configdata;
 &lt;/pre&gt;
 
 == மேற்கோள்களும் குறிப்புகளும் ==
 &lt;references /&gt;
 
 == வெளி இணைப்புகள் ==
 * [http://www.perl.org/ அலுவல் வலைத்தளம்]
 * [http://cpan.org/ Comprehensive Perl Archive Network நிறுவன வலைத்தளம்]
 * [http://search.cpan.org/~syamal/Unicode-Indic-0.01/lib/Unicode/Indic/Tamil.pm தமிழ் எழுத்துரு மாற்றத்திற்கான பெர்ள் நிரல்தொகுதி]
 * http://perl.plover.com/
 * http://pdl.perl.org/index_en.html {{Webarchive|url=https://web.archive.org/web/20071028070153/http://pdl.perl.org/index_en.html |date=2007-10-28 }}
 
 [[பகுப்பு:பெர்ள்]]
 [[பகுப்பு:அமெரிக்கக் கண்டுபிடிப்புகள்]]