Perl: განსხვავება გადახედვებს შორის

496 ბაიტი დაემატა ,  11 წლის წინ
არ არის რედაქტირების რეზიუმე
პერლ-ზე დაწერილი Hello world-ის კანონიკური პროგრამა ასე გამოიყურება:
 
<source lang="perl">
<nowiki>#</nowiki>!/usr/bin/perl
print "Hello, world!\n";
</source>
 
პირველი სტრიქონი ეუბნება იუნიქსის ოპერაციულ სისტემა თუ სად მიაგნოს პერლის ინტერპრეტატორს. მეორე სტრიქონი ბეჭდავს ეკრანზე Hello, world-ს და კურსორი ახალ ხაზზე გადააქვს.
თითოეულ ცვლადს წინ წამძღვარებული აქვს განსაზღვრული სიმბოლო, რომლის საშუალებითაც ინტერპრეტატორი არკვევს რომელი ტიპის მონაცემთა ტიპთან გვაქვს საქმე.
 
<source lang="perl">
$foo # სკალარი
@$foo # სიასკალარი
@foo # სია
%foo # ჰეშ–ცხრილი
</source>
 
სკალარულ ცვლადებს რიცხვები ჩვეულებრივი გზით ენიჭებათ. სტრიქონი კი ბრჭყალებით უნდა იყოს შემოსაზღვრული.
 
<source lang="perl">
$n = 42;
$n $name = "joe"42;
$name $color = 'red'"joe";
$color = 'red';
</source>
 
სიის ტიპის ცვლადის ინიციალიზაცია ხდება შემდეგნაირად, ფრჩხილებში მოთავსებული, მძიმეებით გამოყოფილი ელემენტების საშუალებით:
 
@scores = (32, 45, 16, 5);
<source lang="perl">
@scores = (32, 45, 16, 5);
</source>
 
ჰეშ-ცხრილის ინიციალიზაცია ხდება გასაღები-მნიშვნელობის წყვილის განსაზღვრით:
 
%favorite = (joe => 'red',
<source lang="perl">
sam => 'blue');
%favorite = (joe => 'red',
sam => 'blue');
</source>
 
სიის თითოეულ ელემენტს შეიძლება მივაგნოთ ინდექსის საშუალებით, ჰეშ-ცხრილისას კი გასაღების მითითებით. სიის ინდექსი უნდა იყოს მოთავსებული კუთხურ ფრჩხილებში, ჰეშ-ცხრილის გასაღები კი — ფიგურულში.
 
<source lang="perl">
$scores[2] # @scores მე–2 სიის ელემენტი
$scores[2] $favorite{joe} # %favorite@scores მე–2 ჰეშ–ცხრილისსიის ელემენტი
$favorite{joe} # %favorite ჰეშ–ცხრილის ელემენტი
</source>
 
რამდენიმე ელემენტს შეიძლება მივწვდეთ სიის იდენტიფიკატორის <tt>@</tt> საშუალებით:
 
<source lang="perl">
@scores[2, 3, 1] # @scores სიის სამი ელემენტი
$@scores[2], 3, 1] # @scores მე–2 სიის სამი ელემენტი
@favorite{'joe', 'sam'} # %favorite ორი გასაღების მნიშვნელობა
</source>
 
სიის ელემენტთა რაოდენობა შეიძლება გავიგოთ, თუ ამ სიას სკალარულ ცვლადს მივანიჭებთ
 
<source lang="perl">
$count = @friends;
 
</source>
ჰეშ-ცხრილიდან გასაღებების ან მნიშვნელობების მასივის ამოღება შეიძლება შემდეგნაირად:
 
<source lang="perl">
@names = keys %address;
@names @addresses = valueskeys %address;
@names addresses = keys values %address;
</source>
 
=== მართვის სტრუქტურები ===
ბლოკურად ორიენტირებული მართვის სტრუქტურები, მსგავსი C-ს Java-ს ბლოკურად ორიენტირებული მართვის სტრუქტურების. განშტოების ოპერატორის თუ ციკლის ოპერატორის პირობა შემოსაზღვრული უნდა იყოს ფრჩხილებით, მართვის ბლოკი კი ფიგურული ფრჩხილებით:
 
<source lang="perl">
''label'' while ( ''cond'' ) { ... }
''label'' while ( ''cond'' ) { ... } continue { ... }
''label'' forwhile ( ''init-exprcond'' ;) ''cond-expr''{ ;... ''incr-expr''} )continue { ... }
''label'' foreachfor ( ''varinit-expr'' (; ''cond-expr'' ; ''listincr-expr'' ) { ... }
''label'' foreach ''var'' ( ''list'' ) { ... } continue { ... }
if''label'' foreach ''var'' ( ''condlist'' ) { ... } continue { ... }
if ( ''cond'' ) { ... } else { ... }
if ( ''cond'' ) { ... } elsif ( ''cond'' ) { ... } else { ... }
if ( ''cond'' ) { ... } elsif ( ''cond'' ) { ... } else { ... }
</source>
 
თუ კი ბლოკი მოიცავს მხოლოდ ერთ წინადადებას, მაშინ შესაძლებელია ასეთი ჩანაწერიც ფიგურული ფრჩხილების გარეშე:
 
<source lang="perl">
''statement'' if ''cond'' ;
''statement'' unlessif ''cond'' ;
''statement'' while unless ''cond'' ;
''statement'' untilwhile ''cond'' ;
''statement'' foreachuntil ''listcond'' ;
''statement'' if foreach ''condlist'' ;
</source>
 
=== ქვეპროგრამები ===
ქვეპროგრამა განისაზღვრება sub ოპერატორის საშუალებით და შემდგომ შეიძლება გამოვიძახოთ სახელის საშუალებით. ქვეპროგრამის განსაზღვრა შეიძლება პროგრამის ნებისმიერ ადგილას. ქვეპროგრამის გამოძახების დროს ქვეპროგრამის სახელი აუცილებლად უნდა იყოს დასრულებული ფრჩხილებით და წინადადების დასრულების ოპერატორით (;).
 
<source lang="perl">
foo();
sub foo { ... }
foo;
</source>
 
ქვეპროგრამას შეიძლება გადავცეთ ერთი ან რამდენიმე არგუმენტი:
 
<source lang="perl">
foo $x, @y, %z;
</source>
 
ქვეპროგრამის პარამეტრების განსაზღვრა საჭირო არ არის. რამდენი არგუმენტიც არ უნდა გადავცეთ ქვეპროგრამის, მათ შეიძლება მივწვდეთ <tt>@_</tt>-ს საშუალებით.
 
<source lang="perl">
<tt>@_</tt> ელემენტებს შეიძლება მივწვდეთ ინდექსის მითითებით შემდეგნაირად:
 
$_[0], $_[1]
 
</source>
 
ქვეპროგრამა შესაძლებელია აბრუნებდეს მნიშვნელობასაც:
 
<source lang="perl">
return 42, $x, @y, %z;
</source>
 
=== რეგულარული გამოსახულებები ===
რეგულარულ გამოსახულებებს პერლის გარდა იყენებს მრავალი პლატფორმა თუ ენა, დღესდღეობით რეგულარული გამოსახულებები აღიარებული სტანდარტია.
 
<source lang="perl">
$x = "abcdefgh";
$x =~ m/abc/
</source>
 
მოცემული გამოსახულება იქნება true თუ სტრიქონი შეიცავს მითითებული სიმბოლოების წყებას, თუ არადა false.
 
შესაძლებელია მოდიფიკატორების მითითება, მაგალითად:
<source lang="perl">
$x =~ m/abc/i; # case-insensitive pattern match
$x =~ s/abc/aBc/g; # global search and replace
</source>
 
ერთი შეხედვით რეგულარული გამოსახულება შეიძლება იყოს ძალიან ჩახლართული და ძნელად გარჩევადი.
 
<source lang="perl">
$x =~ s/^([0-2]\d:[0-5]\d:[0-5]\d)\s+\[([^\]]+)\]\s+(.*)$/g;
</source>
 
== რესურსები ინტერნეტში ==
805

რედაქტირება