IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

comptage difficile pour débutant


Sujet :

Langage Perl

  1. #21
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    C'est pas une correction ça

    faut laisser use strict et trouver d'où vient le problème !!

  2. #22
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Points : 12
    Points
    12
    Par défaut suite difficile pour débutant
    la ligne 25 c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while ( my $ligne = <$fh> ) {
    ?

  3. #23
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    N'enlève pas use strict;

    Si on le met, c'est pour de bonnes raisons. Tout script perl doit avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use strict; 
    use warnings;
    car ça permet d'afficher tous les messages d'erreurs et les mauvaises déclaration de variables. Donc à quoi correspond ta ligne 25 ?

    Sinon pour l'ordre décroissant, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach my $url ( sort keys %Totalite_urls ) {
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach my $url ( reverse sort keys %Totalite_urls ) {
    Remets nous ton code complet

  4. #24
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Points : 12
    Points
    12
    Par défaut suite difficile pour débutant
    oui mais c'est classé sur la première lettre après //
    c'est sur le nombre que je veux le classement, est-ce possible ?

    http://www.shufflepoint.com HTTP 1
    http://myspace.com 5
    http://google.fr 6000
    http://0.channel12.facebook.com 2758
    http://0.channel11.facebook.com 1061
    http://0.channel10.facebook.com 5236
    http://0.channel02.facebook.com 2000
    http://0.channel01.facebook.com 2500

    merci

  5. #25
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Remontre nous ton code au complet

  6. #26
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach my $url ( sort { $Totalite_urls{$b} <=> $Totalite_urls{$a} } keys %Totalite_urls ) {

  7. #27
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Points : 12
    Points
    12
    Par défaut suite difficile pour débutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    #!c:/perl/perl.exe
    use strict;
    use warnings;
     
    my $repertoire = 'd:/tempo';
    my $fichier_resultat = 'resultat.txt';
     
    # Récupération des fichiers dans les répertoires et sous répertoires
    # on récupère les fichiers de type testX.txt
    my @mes_fichiers = grep {/Testww\d*\.txt$/i} getFiles($repertoire);
    print "il y a ",scalar(@mes_fichiers)," fichiers dans $repertoire\n";
     
    # On stocke toutes les urls et leur nombre dans ce hash
    my %Totalite_urls;
     
    # Lecture de tous les fichiers
    foreach my $fichier ( @mes_fichiers ) {
     
      # ouverture du fichier
      open( my $fh, '<', $fichier ) or die("Impossible de lire $fichier\nE/S : $!\n");
      print $fichier."\n";
      # Lecture ligne à ligne
    FICHIER:
      while ( my $ligne = <$fh> ) {
      print $ligne
        # supression retour chariot
        chomp $ligne;
     
        # si $url et $nombre incorrect, on passe à la suite
        my ( $url, $nombre );
        unless ( ( $url, $nombre ) = $ligne =~ m{(http.*?)\s+(\d+)}i ) {
          next FICHIER;
        }
     
        # stockage de l'url
        $Totalite_urls{$url} += $nombre;
        #print $Totalite_urls."\n";
      }
     
      # Fermeture fichier
      close($fh);
    }
     
    # A ce stade, notre hash contient toute les urls, on les afiche
    # ouverture du fichier resultat
    open( my $fh_resultat, '>', $fichier_resultat )
      or die("Impossible d'ecrire dans $fichier_resultat\nE/S : $!\n");
     
    # Lecture du hash en triant les urls
    foreach my $url ( reverse sort keys %Totalite_urls ) {
      print {$fh_resultat} "$url $Totalite_urls{$url}\n";
    }
     
    # Fermeture fichier
    close($fh_resultat);
     
    sub getFiles {
      my ($repertoire) = @_;
      my @fichiers;
     
      # Ouverture d'un répertoire
      opendir( my $FhRep, $repertoire )
        or die "impossible d'ouvrir le répertoire $repertoire\n";
     
      # Liste fichiers et répertoire sauf (. et ..)
      my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
     
      # Fermeture du répertoire
      closedir($FhRep);
     
      # On récupère tous les fichiers
      foreach my $nom (@Contenu) {
     
        # Fichiers
        if ( -f "$repertoire/$nom" ) {
          push( @fichiers, "$repertoire/$nom" );
        }
     
        # Repertoires
        elsif ( -d "$repertoire/$nom" ) {
     
          # recursivité
          push( @fichiers, getFiles("$repertoire/$nom") );
        }
      }
     
      return @fichiers;
    }

  8. #28
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    forcément tu as inclus des erreurs

    1- ligne1 #!c:/perl/perl.exe inutile, remplace le par
    2- ligne 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @mes_fichiers = grep {/Testww\d*\.txt$/i} getFiles($repertoire);
    pourquoi le ww ?, il y a des façons plus propre d'écrire

    3- ligne 25
    Tu n'as pas mis de point virgule

    4- ligne 37 : si tu veux afficher le nombre d'urls, il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print scalar keys %Totalite_urls." urls\n";
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #print $Totalite_urls."\n";
    ...

    Voilà, donc ton script devient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $repertoire = 'd:/tempo';
    my $fichier_resultat = 'resultat.txt';
     
    # Récupération des fichiers dans les répertoires et sous répertoires
    # on récupère les fichiers de type testX.txt
    my @mes_fichiers = grep {/Test\w*\.txt$/i} getFiles($repertoire);
    print "il y a ",scalar(@mes_fichiers)," fichiers dans $repertoire\n";
     
    # On stocke toutes les urls et leur nombre dans ce hash
    my %Totalite_urls;
     
    # Lecture de tous les fichiers
    foreach my $fichier ( @mes_fichiers ) {
     
      # ouverture du fichier
      open( my $fh, '<', $fichier ) or die("Impossible de lire $fichier\nE/S : $!\n");
      print "$fichier\n";
      # Lecture ligne à ligne
    FICHIER:
      while ( my $ligne = <$fh> ) {
        print "$ligne\n";
        # supression retour chariot
        chomp $ligne;
     
        # si $url et $nombre incorrect, on passe à la suite
        my ( $url, $nombre );
        unless ( ( $url, $nombre ) = $ligne =~ m{(http.*?)\s+(\d+)}i ) {
          next FICHIER;
        }
     
        # stockage de l'url
        $Totalite_urls{$url} += $nombre;
        print scalar keys %Totalite_urls," urls \n";
      }
     
      # Fermeture fichier
      close($fh);
    }
     
    # A ce stade, notre hash contient toute les urls, on les afiche
    # ouverture du fichier resultat
    open( my $fh_resultat, '>', $fichier_resultat )
      or die("Impossible d'ecrire dans $fichier_resultat\nE/S : $!\n");
     
    # Lecture du hash en triant les urls
    foreach my $url ( reverse sort keys %Totalite_urls ) {
      print {$fh_resultat} "$url $Totalite_urls{$url}\n";
    }
     
    # Fermeture fichier
    close($fh_resultat);
     
    sub getFiles {
      my ($repertoire) = @_;
      my @fichiers;
     
      # Ouverture d'un répertoire
      opendir( my $FhRep, $repertoire )
        or die "impossible d'ouvrir le répertoire $repertoire\n";
     
      # Liste fichiers et répertoire sauf (. et ..)
      my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
     
      # Fermeture du répertoire
      closedir($FhRep);
     
      # On récupère tous les fichiers
      foreach my $nom (@Contenu) {
     
        # Fichiers
        if ( -f "$repertoire/$nom" ) {
          push( @fichiers, "$repertoire/$nom" );
        }
     
        # Repertoires
        elsif ( -d "$repertoire/$nom" ) {
     
          # recursivité
          push( @fichiers, getFiles("$repertoire/$nom") );
        }
      }
     
      return @fichiers;
    }
    La première des choses à faire lorsque l'on débute dans un nouveau langage de programmation, c'est de lire et relire les documentations adéquates. Et la FAQ est un bon début. Sinon, il n'y a absolument aucun intérêt de t'aider.

  9. #29
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Points : 12
    Points
    12
    Par défaut suite difficile pour débutant et fin
    ok j'ai bien noté tes remarques et te remercie grandement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Un select un peu difficile pour un débutant
    Par mitchb dans le forum Débuter
    Réponses: 1
    Dernier message: 27/03/2007, 22h35
  2. Réponses: 2
    Dernier message: 17/10/2005, 22h16
  3. aide petit programme pour débutant
    Par kartp0rqx dans le forum C
    Réponses: 16
    Dernier message: 14/10/2005, 19h31
  4. Aide pour débutant : addition
    Par playentry dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/03/2005, 19h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo