Jump to content

Recommended Posts

Ce este Perl?

 

Perl este un limbaj de programare dinamic, procedural, creat de Lary Wall în 1987. Perl împrumută caracteristicile limbajelor C, shell, AWK, sed, Lisp și ale multor alte limbaje într-o măsură mai mică.

 

O caracteristică importantă care deosebește Perl de alte limbaje este faptul că beneficiază de un repository numit CPAN ce conține module open-source bine documentate. Utilizarea CPAN pentru re-folosirea codului deja scris este încurajată.

 

Perl este un limbaj de programare generic inițial dezvoltat pentru manipularea de text și în prezent folosit pentru o gamă largă de aplicații inclusiv administrarea de sisteme, dezvoltare web, aplicații de rețea, interfețe grafice și altele.

 

Limbajul intenționează să fie practic, ușor de folosit, eficient, complet. Caracteristicile principale sunt ușurința de utilizare, suport pentru programare procedurală și obiectuală, are integrat un suport puternic pentru procesarea de text și o colecție mare de module provenite de terți.

 

Program exemplu

#!/usr/bin/perl
print "Hello, world!\n";

Tipuri de date

1) Scalari

$a = 12;
$b = 'foo';
$c = 3.14324324234;

2) Referințe către scalari, liste și hash-uri

3) Liste(array)

  ('a','foo',123) 

4) Referința la o lista in urmatorul mod

my @lista = (1,2,3);
  my $referinta_la_lista = \@lista;

5) Hash(cu chei unice)

%hash = (
  foo => 'bar' ,
  tar => 123 , 
)

blessed-hashes , blessed-scalars. Cu aceste tipuri de date se pot construi obiecte și deci OOP.

 

Structuri de control

 

for(@lista){...} sau for my $iter(@lista){ $iter...} sau expr for expr sau for($i=0;$i<$j;$i++){...}

 

foreach(@lista){...}

 

while(expr){...} sau expr while expr;

 

until(expr){...} sau expr until expr;

 

if(expr)

 

unless(expr) - acealsi lucru cu if(!expr)

 

grep {block} (lista) ( returnează doar elementele din lista pt care block e evaluat true)

 

map { block } (lista) ( returnează o lista cu valorile returnate de block pentru fiecare element din lista)

 

each pentru iterarea unui hash după tuplu (cheie,valoare)

 

given/when este varianta de switch din C/C++ a lui Perl , introdusa in Perl 5.10

 

sort { comparator } (array) . sortează o listă după funcția "comparator" care returnează -1,0,1 în funcție de $a și $b care sunt variabilele comparate

 

next , continue

 

shift , unshift , push , pop sunt operații pentru liste/stive în Perl

 

eval(expr). În cazul în care expresia expr produce o eroare, aceasta e stocată în [email protected]

 

Toate structurile repetitive pot fi antepuse sau postpuse în Perl.

 

Observație: În Perl do nu este structură de control repetitivă.

 

Subrutine

 

Se declară cu

sub _numele_subrutinei_ {
 # code here
}

Se apelează cu

_numele_subrutinei_( _parametri_ );

În subrutină parametrii se regăsesc în @_

Ei pot fi accesați cu @_[index] sau $_[index].

 

Exemplu

#!/usr/bin/perl

use strict;
use warnings;

display('foo');

sub display {
    my $message = shift; 
      # shift se face implicit pe @_
      # o alta metoda e: my ($message) = @_
   print $message;
}

Observație: nu e obligatoriu ca subrutina să fie definită înaintea apelului acesteia (ca în cazul C-ului de exemplu)

 

În general dacă sunt mai mulți parametri se poate folosi

sub display {
     my ($param1,$param2,$param3) = @_;
}

 

Interfețe pentru baze de date

 

DBI

use DBI;

my $dbh = DBI->connect($data_source, $username, $auth, \%attr); // conectarea la o bază de date
my $query = $dbh->do("query");
// sau
my $query = $dbh->prepare("query");
$query->execute($argumente);

 

Module importante Perl:

 

1)Framework pentru OOP Moose

2)Framework-uri web:

○Catalyst

○CGI::Application

○Dancer

○Mojolicious

3)Framework pentru programare concurentă POE

4)ORM pentru Perl DBIx::Class

5)Motor de templetizare TT

6)Module pentru serializarea structurilor de date(folositoare printre altele și pentru debugging) Data::Dumper Data::Dump::Streamer Data::TreeDumper

7)Modul pentru extragerea informațiilor din fișiere format HTML/XML HTML::TreeBuilder HTML::TreeBuilder::XPath

8)Modul pentru automatizare pagini web WWW::Mechanize Gungho

 

Contra

 

Perl este deseori criticat ca fiind 'line-noise' pentru că structura limbajului poate produce cod aparent ilizibil. Există concursuri de Perl golf( 1 , 2 ), și Perl obfu.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
|

Theme Made by Zayon & Cyber Designs

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.