Publicité
Discussion fermée Actualité déjà publiée
Page 2 sur 4 PremièrePremière 1234 DernièreDernière
Affichage des résultats 21 à 40 sur 64
  1. #21
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Par défaut

    Merci, modification faite

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  2. #22
    Membre éprouvé Avatar de Schmorgluck
    Profil pro
    Inscrit en
    mai 2006
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : mai 2006
    Messages : 354
    Points : 499
    Points
    499

    Par défaut

    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!
      0  0

  3. #23
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Par défaut

    Merci pour ta remarque. Modification effectuée.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  4. #24
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Par défaut

    Pensez à contribuer à l'évolution de la FAQ :

    Demande d'une modification,
    Demande de rajouts de certaines informations qu'on aurait omis.
    Toute suggestion est la bienvenue, même si vous n'avez pas la réponse.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  5. #25
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 020
    Points : 3 865
    Points
    3 865

    Par défaut

    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 :

    $ corelist POSIX

    POSIX was first released with perl 5
    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.
      0  0

  6. #26
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Par défaut

    C:\>corelist POSIX
    'corelist' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    Il faut que le module Module::CoreList soit installé pour pouvoir l'utiliser.

    Or ce module est dans le core à partir de la version 5.8.9 de Perl et pas avant.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  7. #27
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  8. #28
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 020
    Points : 3 865
    Points
    3 865

    Par défaut

    Mmmm, étrange :
    $ corelist Module::CoreList

    Module::CoreList was first released with perl 5.009002
    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.
      0  0

  9. #29
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 020
    Points : 3 865
    Points
    3 865

    Par défaut

    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 :
    1
    2
    3
    use Getopt::Long;
    GetOptions("a=i" => \$a);
    $a ||= 10; # on initialise à 10 même si l'utilisateur a fourni l'option "-a 0"
    Maintenant, on peut écrire en version 5.10
    Code :
    1
    2
    3
    use Getopt::Long;
    GetOptions("a=i" => \$a);
    $a //= 10; # on initialise à 10 seulement si l'utilisateur n'a pas fourni l'option "-a"
    Edit : peut-être dans cette rubrique ? http://perl.developpez.com/faq/perl/?page=sectionB2
    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.
      0  0

  10. #30
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Par défaut

    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

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  11. #31
    Membre confirmé
    Profil pro
    Inscrit en
    août 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 154
    Points : 202
    Points
    202

    Par défaut

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

  12. #32
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Par défaut

    , bonnes remarques,

    Dès que j'ai un peu de temps, je mettrais à jours la FAQ Perl.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  13. #33
    Membre éprouvé Avatar de Schmorgluck
    Profil pro
    Inscrit en
    mai 2006
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : mai 2006
    Messages : 354
    Points : 499
    Points
    499

    Par défaut

    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!
      0  0

  14. #34
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Par défaut

    Pourquoi pas. Ce n'est pas une mauvaise idée, je mettrais à jour la FAQ quand j'aurais un peu de temps.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  15. #35
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    octobre 2009
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : octobre 2009
    Messages : 481
    Points : 739
    Points
    739

    Par défaut

    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 :
    1
    2
    perl -v
    This is perl, v5.10.0 built for i486-linux-gnu-thread-multi
    et a priori le switch fonctionne sans utiliser perl 6 comme spécifié dans la FAQ :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    use Switch;
    # ..
    switch ($$type[$i]) {
       case 1 { print 'foo' }
       case 2 { print 'bar' }
    	#...
       else { print 'bidule' }
    }
    Nota: je n'ai pas trouvé non plus ce point (sur les switch) dans la super belle doc de Sébastien Aperghis-Tramoni

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

  16. #36
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Par défaut

    Merci pour tes remarques. La FAQ a été mise à jours.

    Merci.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  17. #37
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    octobre 2009
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : octobre 2009
    Messages : 481
    Points : 739
    Points
    739

    Par défaut array_diff

    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #!/usr/bin/perl -w
    use strict;
    use warnings;
    use Data::Dumper;
     
    sub array_diff {
    	# arrays @a and @b to be compared
    	my (@a, @b) = @_;
     
    	my @isect;
    	my @union;
    	my @diff;
    	my $e;
    	my %count;
    	my %hash_of_arrays;
     
    	# check entries
    	if ( (ref (\@a) ne "ARRAY") || (ref (\@b) ne "ARRAY") ) {
    		print "entries shall be ARRAY";
    		exit 0;
    	}
     
    	# store all keys into an hash $count
    	foreach $e (@a, @b) { $count{$e}++ }
     
    	# browse the hash $count
    	foreach $e (keys %count) {
    		# union is simple
    		push(@union, $e);
     
    		# intersection
    		if ($count{$e} == 2) {
    			push @isect, $e;
    		# difference
    		} else {
    			push @diff, $e;
    		}
    	}
     
    	# store resulting arrays into an hash of arrays
    	$hash_of_arrays{diff} = \@diff;
    	$hash_of_arrays{union} = \@union;
    	$hash_of_arrays{isect} = \@isect;
     
    	return %hash_of_arrays ;
    }
     
    # Testing the function
    my @arr1 = ( "foo", "bar", "truc", "bidule", 1 , 2, 3);
    my @arr2 = ( "foo", "car", "truc", "bidule", 1 , 2, 4);
    my %result;
     
    # global hash result
    %result = &array_diff(@arr1, @arr2);
    print Dumper(\%result);
     
    # diff only
    my $diff = $result{diff};
    print Dumper($diff);
     
    # Diff Output:	'3', 'car',  'bar', '4'
    # Union Output :	'truc', '3', 'car',   '2',  'bar',   '1',  '4',  'foo', 'bidule'
    # Intersection Ouput :	'truc', '2',  '1',  'foo', 'bidule'
    Et un autre petit truc sur les hashes quand on ne connait pas les clés existantes de manière déterministe et qu'on veut en ajouter une :
    Code :
    1
    2
    my %hash;
    $hash{nouvelle_cle} .= "nouvelle_valeur";
      0  0

  18. #38
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    16 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 658
    Points : 490 378
    Points
    490 378

    Par défaut

    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";
    au lieu de
    Code :
    $hash{nouvelle_cle} .= "nouvelle_valeur";
    car à l'origine, $hash{nouvelle_cle} n'existe pas.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
      0  0

  19. #39
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    octobre 2009
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : octobre 2009
    Messages : 481
    Points : 739
    Points
    739

    Par défaut

    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 !
      0  0

  20. #40
    Expert Confirmé

    Inscrit en
    avril 2009
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : avril 2009
    Messages : 3 020
    Points : 3 865
    Points
    3 865

    Par défaut

    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";
    ne fait pas qu'auto-vivifier la nouvelle clé. L'instruction ajoute le texte "nouvelle_valeur" à la valeur existante si la clé existait déjà. Ca ne remplace pas la valeur si elle existe déjà.

    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};
    Mais on peut aussi se contenter de vérifier que la valeur n'est pas définie (que la clé existe ou non) :
    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.
      0  0

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •