|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
Merci, modification faite
__________________
|
|
|
00
|
|
|
#22 |
|
Membre éprouvé
![]() Inscription : mai 2006 Messages : 354 ![]() |
Quelques petites erreurs dans la section Tests sur les fichiers, à propos des informations renvoyées par stat : l'exemple de code pour en extraire les résultats est erroné. D'une part il comporte un scalaire de trop, $rdev, d'autre part, j'ai testé (pris d'un doute) cette syntaxe pour affecter des variables, mais elle ne fonctionne pas, il manque des parenthèses autour de la liste de scalaires.
__________________
There's nothing like $HOME! |
|
|
00
|
|
|
#23 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
Merci pour ta remarque. Modification effectuée.
__________________
|
|
|
00
|
|
|
#24 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
Pensez à contribuer à l'évolution de la FAQ :
__________________
|
|
|
00
|
|
|
#25 | |
|
Expert Confirmé
![]() ![]() Inscription : avril 2009 Messages : 2 633 ![]() |
Je n'ai pas vérifié si la question est dans les FAQ ou pas, mais tant que j'y pense, je la donne tout de même :
[Q] Comment savoir si un module est disponible dans le Core de perl ? [A] en appelant corelist : Citation:
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430) Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book) Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé Using strict and warnings is good for you. |
|
|
|
00
|
|
|
#26 | |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
Citation:
Or ce module est dans le core à partir de la version 5.8.9 de Perl et pas avant.
__________________
|
|
|
|
00
|
|
|
#27 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
__________________
|
|
|
00
|
|
|
#28 | |
|
Expert Confirmé
![]() ![]() Inscription : avril 2009 Messages : 2 633 ![]() |
Mmmm, étrange :
Citation:
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430) Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book) Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé Using strict and warnings is good for you. |
|
|
|
00
|
|
|
#29 | ||||
|
Expert Confirmé
![]() ![]() Inscription : avril 2009 Messages : 2 633 ![]() |
A titre indicatif, Djibril (et on peut sans doute l'ajouter à une FAQ), il existe deux nouveaux opérateurs depuis perl 5.10 : // et //=
$a // $b est similaire à defined($a) ? $a : $b $a //= $b est similaire à $a = defined($a) ? $a : $b C'est bien pratique pour initialiser les variables "undef" avec une valeur, tout en considérant qu'un valeur fausse peut être une valeur initiale correcte. Exemple : avant la 5.10, si l'on utilisait la construction $a ||= "valeur par défaut", on pouvait initialiser à la valeur par défaut si $a était défini et nul (ou vide pour une chaine). Code :
Code :
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430) Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book) Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé Using strict and warnings is good for you. |
||||
|
|
00
|
|
|
#30 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
Salut à tous,
Afin de faire une petite mise à jour de la FAQ Perl, tout forumeur débutant ou non est bienvenu pour nous donner un coup de main. Le but est de relire la FAQ Perl, afin de corriger les fautes d'orthographe, les phrases, les bugs dans les codes s'il y en a, de rajouter des questions si besoin. Vous n'êtes pas obligé de tout lire, juste ce qui vous intéresse. Si vous avez envi d'une modification, faites le nous savoir dans ce même topic en mentionnant le lien de la question ou l'intitulé de la nouvelle. Une section de perl 5.8 à 5.10 va aussi être créée. Donc toute contribution est la bienvenue pour y mettre des nouvelles questions en rapport avec les nouveautés de Perl 5.10. Vous pouvez vous baser sur la belle documentation d’un mongeur français (Sébastien Aperghis-Tramoni). Merci à tous
__________________
|
|
|
00
|
|
|
#31 |
|
Membre actif
![]() Inscription : août 2009 Messages : 154 ![]() |
On a des questions récurrentes sur le forum de "Est-ce qu'on peut faire ça en Perl", et c'est vrai que quand on débute, on n'a pas forcément la visibilité sur cpan.org.
Dans la FAQ, dans cette section: http://perl.developpez.com/faq/perl/?page=sectionC38 Il faudrait peut-être ajouter -ou alonger l'existant- pour qu'il soit bien clair que sur cpan on trouve absolument tout sur tout ou presque, et que ce sont des outils (globalement) propres et officiels, à utiliser sans crainte. Exemple: "Comment chercher si un module existe pour ce que je veux faire ? Pour toutes les problématiques du genre: Comment faire un truc en Perl ? Personne n'a une toolbox pour faire ça ? => Cpan a peut-être la solution. Peut-on envoyer des mails via snmp en Perl ? Comment parser facilement un XML en Perl ? Puis-je gérer les cookies dans Firefox en Perl ? Comment créer un arbre en Perl ? L'url http://search.cpan.org permet de faire une recherche parmis tous les modules cpan. On y trouve de véritables boites à outils pour tous les domaines informatiques professionnels comme pour le loisir." Dans les modules utiles, je mettrais aussi: Data::Dumper Permet d'afficher n'importe quelle variable, très utile pour debugger un programme Log::Log4perl Gestion des logs ultra-simple et pratique. A utiliser dès que vos daemon atteignent une certaine complexité. Ces points sont bien sûr laissés à la libre appréciation des autres membres plus expérimentés de ce forum et à de meilleurs rédacteurs que moi. Renvoyer les gens vers cpan n'est pas très long. |
|
|
00
|
|
|
#32 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
, bonnes remarques, Dès que j'ai un peu de temps, je mettrais à jours la FAQ Perl.
__________________
|
|
|
00
|
|
|
#33 |
|
Membre éprouvé
![]() Inscription : mai 2006 Messages : 354 ![]() |
Ce serait peut-être une bonne idée d'intégrer à la FAQ les conseils de Jedai dans son post Débutants ou expérimentés : Comment écrire du bon code en Perl.
Ma suggestion serait de l'ajouter à la fin de la section S'initier à Perl. Qu'en pensez vous ?
__________________
There's nothing like $HOME! |
|
|
00
|
|
|
#34 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
Pourquoi pas. Ce n'est pas une mauvaise idée, je mettrais à jour la FAQ quand j'aurais un peu de temps.
__________________
|
|
|
00
|
|
|
#35 | ||||
|
Membre chevronné
![]() ![]() |
Super FAQ, claire, lisible, complète, merci et bravo !
3 petits commentaires : 1) Une petite coquille ici: diament s'écrit diamant 2) Une remarque de noob pour le switch : J'expérimente cette version sous debian lenny Code :
Code :
Ma suggestion: Peut-être completer ou mettre à jour ce point conformément à ce post. 3) CGI ERROR 500 Apparemment le truc classique pour les CGI. Comme j'ai mis un temps certain avant de trouver le pourquoi de cette erreur, j'en fais part: Si on "détourne" un peu l'utilisation d'un CGI et qu'on ne code pas de sortie, ou tout simplement que l'on code par étape et quel'on n'a pas encore codé de sortie, l'execution mène à une erreur 500, et le log fait apparaitre un "Premature end of script headers", peu évocateur pour le noob que je suis. C'est un peu déroutant et pourtant pas bien grave. Donc ma suggestion: ajouter dans les exemples d'erreur que le codage d'une sortie est nécessaire pour ne pas obtenir une belle erreur 500. |
||||
|
|
00
|
|
|
#36 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
Merci pour tes remarques. La FAQ a été mise à jours.
Merci.
__________________
|
|
|
00
|
|
|
#37 | ||||
|
Membre chevronné
![]() ![]() |
Toujours en pleine découverte de Perl et plus habitué à JS et PHP, je cherchais à comparer des tableaux (array ou liste), de type array_diff et array_intersect.
J'ai trouvé des modules tout prêts mais bon, pour la portabilité, j'ai preféré chercher une solution "simple" (merci O'Reilly). Si ça peut être utile dans la FAQ (Sommaire > S'initier à Perl > Listes), quitte à supprimer le Data:: Dumper: Code :
Code :
|
||||
|
|
00
|
|
|
#38 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 506 ![]() |
Dans la rubrique Perl, il existe une page source où l'on met des programmes tout fait pour dépanner tout le monde. Pour y participer, il faut donner son code ici.
Pour comparer des tableaux, il faut utiliser le module List::Compare. Il est fait pour cela et s'installe sur toutes les plateformes. De plus, il est plus complet. Je pourrais d'ailleurs rajouter une question dans les sources pour comparer des tableaux. La FAQ nécessite d'un peu de ménage, du moins, d'aération surtout dans la section liste . Il faudrait que je trouve du temps pour m'y mettre.si tu veux, je rajoute ton code dans nos sources ?? sinon pour ton hash, on écrit Code :
$hash{nouvelle_cle} = "nouvelle_valeur"; Code :
$hash{nouvelle_cle} .= "nouvelle_valeur";
__________________
|
|
|
00
|
|
|
#39 |
|
Membre chevronné
![]() ![]() |
J'ai bien vu les modules existants, merci.
Oui si tu veux ajouter ce petit script dans les sources, pas de probleme, en fait je n'avais pas trouvé l'endroit pour Perl (je cherchais un thread dans la FAQ comme c'est le cas pour les bash Linux). hashes: En fait, j'avais bien compris comment ajouter une valeur dans un hash. La concaténation dans ce cas s'appelle "Autovivification", comme précisé sur ce site. Je me suis mal expliqué, mais jettes un oeil au chapitre "autovivification", tu verras mieux l'intéret de cette notation. Et merci encore pour la bonne maintenance de la section Perl. C'est vraiment bien fait, à jour et complet ! |
|
|
00
|
|
|
#40 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2009 Messages : 2 633 ![]() |
L'autovivification est un mécanisme à effet de bord, qui comme tout effet de bord, n'a pas que des avantages (notamment pour la création des structures à plus d'un niveau).
Du coup, je ne conseille pas son utilisation intentionnelle (il y a déjà assez à faire avec son utilisation non intentionnelle, source de bug). Par ailleurs, écrire : Code :
$hash{nouvelle_cle} .= "nouvelle_valeur"; Méfiance également, certaines fonctions utilisées sur des éléments de hash n'autovivifient pas (et heureusement), comme la fonction exists et sans doute tous les opérateurs de comparaison. Pour aller plus loin sur l'auto-vivification, un article des mongueurs : http://articles.mongueurs.net/magazi...ag43.html#h1.4 PS : pour écrire une valeur dans une clé si est seulement si la clé n'existe pas, il est préférable d'écrire : Code :
$hash{nouvelle_cle} = "nouvelle_valeur" if !exists $hash{nouvelle_cle}; Code :
$hash{nouvelle_cle} //= "nouvelle_valeue";
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430) Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book) Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé Using strict and warnings is good for you. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com