C'est pas une correction ça
faut laisser use strict et trouver d'où vient le problème !!
C'est pas une correction ça
faut laisser use strict et trouver d'où vient le problème !!
la ligne 25 c'est
?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 while ( my $ligne = <$fh> ) {
N'enlève pas use strict;
Si on le met, c'est pour de bonnes raisons. Tout script perl doit avoircar ça permet d'afficher tous les messages d'erreurs et les mauvaises déclaration de variables. Donc à quoi correspond ta ligne 25 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 use strict; use warnings;
Sinon pour l'ordre décroissant, remplace
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part foreach my $url ( sort keys %Totalite_urls ) {
Remets nous ton code complet
Code : Sélectionner tout - Visualiser dans une fenêtre à part foreach my $url ( reverse sort keys %Totalite_urls ) {
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
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
Remontre nous ton code au complet
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Code : Sélectionner tout - Visualiser dans une fenêtre à part foreach my $url ( sort { $Totalite_urls{$b} <=> $Totalite_urls{$a} } keys %Totalite_urls ) {
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
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; }
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 #!/usr/bin/perl
pourquoi le ww ?, il y a des façons plus propre d'écrire
Code : Sélectionner tout - Visualiser dans une fenêtre à part my @mes_fichiers = grep {/Testww\d*\.txt$/i} getFiles($repertoire);
3- ligne 25
Tu n'as pas mis de point virgule
Code : Sélectionner tout - Visualiser dans une fenêtre à part print $ligne
4- ligne 37 : si tu veux afficher le nombre d'urls, il faut écrire
et non
Code : Sélectionner tout - Visualiser dans une fenêtre à part print scalar keys %Totalite_urls." urls\n";
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part #print $Totalite_urls."\n";
Voilà, donc ton script devient ceci :
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.
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; }
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
ok j'ai bien noté tes remarques et te remercie grandement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager