Vhaerun Posted March 10, 2008 Report Posted March 10, 2008 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 timpSe 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 arrayAi 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 repetitivaSa zicem ca apelez o functie pentru a seta valoarea unei variabile , si imi convin doar anumite valori . Ex : vreau doar culoarea movmy @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 . Quote