Jump to content
Vhaerun

Perl Tips&Tricks , The Phantom Menace

Recommended Posts

Posted

Perl time again !

In tutorialele de acest tip o sa va arat niste chestii perl mai mult sau mai putin folosite , mai mult sau mai putin stiute .

1.Cum sa rulezi o bucata de cod o anumita perioada de timp

Se foloseste functia alarm .Exemplu :


$SIG{ALRM}=sub { die "Time-out!\n" };
print "Ai 5 secunde sa iti introduci numele\n";
alarm 5;
<STDIN>;
alarm 0;

Chestia asta se traduce astfel : functia alarm va trimite un semnal ALARM scriptului dupa numarul de secunde specificat. Daca se va executa codul ce urmeaza dupa ea , alarm e anulat . Daca nu , semnalul va fi tratat cu functia aflata la cheia $SIG{ALRM} . Pentru a nu iti opri executia scriptului , alarm se foloseste intr-un eval .

2.Cum scot elemente dintr-o lista care sa indeplineasca o anumita conditie?


my @array=(1,2,3,4,5,6,7,8,9,10);
my @pare;

for my $numar(@array) {
push(@pare,$numar) if($numar %2==0);
}

YEAH RIGHT!!! Daca nu te poti dezlipi de Turbo Pascal faci asa :)

Daca vrei s-o faci The Perl Way , faci asa :


my @array=(1,2,3,4,5,6,7,8,9,10);
my @pare=grep { $_ % 2==0 } @array;

3.Fa o operatie asupra tuturor elementelor dintr-un array

Ai putea sa faci asa :


my @array=(1,2,3,4,5,6);

for my $nr (@array) {
$nr+=10;
}

sau ai putea face asa :


my @array=(1,2,3,4,5,6);
map { $_+=10 } @array;

4.Cum simplific o structura repetitiva

Sa zicem ca apelez o functie pentru a seta valoarea unei variabile , si imi convin doar anumite valori . Ex : vreau doar culoarea mov



my @culori=qw(alb negru rosu mov violet);
my $culoare="incolor";

while(($culoare=$culori[rand @culori]) ne "mov") {
;
}

print "$culoare\n";

Eu prefer sa scriu asa :



my @culori=qw(alb negru rosu mov violet);
my $culoare="incolor";

NEXT_COLOR:
$culoare=$culori[rand @culori];
goto NEXT_COLOR if($culoare ne "mov");

print "$culoare\n";

Care e mai lizibila ? :)

Until next time .

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...