Jump to content
Vhaerun

Perl Tips&Tricks , The Phantom Menace

Recommended Posts

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 .

Link to comment
Share on other sites

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...