Simplifications de Perl

Moderator: Mod

Simplifications de Perl

Postby ZADYREE » Fri Sep 30, 2011 12:23 am

Voici ici quelques instructions que l'on apprend dans les tutoriels sur internet, mais dont les syntaxes sont désuètes:

[code:1:75a8079698]for($i = 0; $i <= 20; $i++) {}[/code:1:75a8079698]
à remplacer par
[code:1:75a8079698]for my $i(0..20) {}[/code:1:75a8079698]


[code:1:75a8079698]open(BLOCK, ">$file"); # Très dangereux: exécution de code arbitraire possible[/code:1:75a8079698]
à remplacer par
[code:1:75a8079698]open(my $fh, '>', $file);[/code:1:75a8079698]


[code:1:75a8079698]foreach my $lettre (chr(ord(a))..chr(ord(z))) {
print $_;
}[/code:1:75a8079698]
à remplacer par
[code:1:75a8079698]say for 'a'..'z';[/code:1:75a8079698]


Conseil: La variable $_ est magique, mais pas divine, essayer de l'utiliser le moins possible, et ne jamais forcer sa modification.
Pour cela, transférer sa valeur dans une autre variable. Voir exemple:

[code:1:75a8079698]for(1..10) {
print ($_ - 1) . "\n";
}[/code:1:75a8079698]

à remplacer par

[code:1:75a8079698]for my $num(1..10) {
print ($num - 1), "\n";
}[/code:1:75a8079698]



Des exemples seront ajoutés au fur et à mesure.
User avatar
ZADYREE
Projets
 
Posts: 136
Joined: Sat Dec 06, 2008 1:26 pm
Location: Near eip

Postby TOSH » Fri Sep 30, 2011 2:48 pm

Intéressant.

Quand tu dis que c'est désuet, c'est sur la version de Perl 6 nan ? Mais d'après ce que j'ai compris, Perl 5 et Perl 6 deviendront en fait des langages différents, Perl 6 n'ayant pas pour vocation de remplacer Perl 5. À la manière du C et du C++.

Et d'ailleurs, ayant un peu testé Perl 6, je trouve que tout ce qui faisait le charme de Perl 5 a disparu.

Sinon, je ne savais pas que la fonction open permettait l'exécution arbitraire de code si elle était mal utilisée. Si tu as un exemple à présenté, je suis preneur ;) . (Je suppose qu'en craftant la variable $file, on peut réussir à exécuter une commande)
TOSH
Projets
 
Posts: 19
Joined: Sat Aug 22, 2009 12:49 pm


Return to Perl

Who is online

Users browsing this forum: No registered users and 2 guests

cron