Tri des lignes d'un fichier - Page 2
Résolu
Précédent
- 1
- 2
Non, toujours le meme resultat.
bizarre
J'ai fait print $_ mais ca n'affiche rien.
je t'ai dit que $_ c'est un tableau (enfin une référence vers un tableau anonyme)
si on a un ttable tab en perl on l'appelle @tab
alors si on a un tableau $_ , on l'appelle comment ?!
1 on voit qu'il s'agit de tableau
bizarre
J'ai fait print $_ mais ca n'affiche rien.
je t'ai dit que $_ c'est un tableau (enfin une référence vers un tableau anonyme)
si on a un ttable tab en perl on l'appelle @tab
alors si on a un tableau $_ , on l'appelle comment ?!
1 on voit qu'il s'agit de tableau
lami20j@debian:~/trash$ cat ccm.pl
#!/usr/bin/perl
while(<DATA>){
/.*:\d+\s+(.*)\[(\d+)x(\d+)\](\d{4})\..*/;
chomp;
push @nontrie,[$_,$2,$3,$4];
}
print "$_\n" for @nontrie;
__END__
-rwxrwx--- 1 53460 2007-10-07 02:29 600px-V838_Mon_HST[600x600]1999.jpg
-rwxrwx--- 1 69991 2007-10-07 02:27 739px-Omega_Nebula[739x600]1996.jpg
-rwxrwx--- 1 37021 2007-10-07 02:26 NGC2080[600x601]1998.jpg
-rwxrwx--- 1 138525 2007-10-07 02:25 603px-Crab_Nebula[603x600]1997.jpg
-rwxrwx--- 1 525752 2007-10-07 02:24 ESO97-13[1280x1280]1999.jpg
-rwxrwx--- 1 88098 2007-10-07 02:24 600px-ESO97-13[600x601]1999.jpg
lami20j@debian:~/trash$ perl ccm.pl
ARRAY(0x814ec28)
ARRAY(0x814f72c)
ARRAY(0x814f774)
ARRAY(0x814f7bc)
ARRAY(0x814f804)
ARRAY(0x814f84c)
2 on affiche le tableau référencé par $_lami20j@debian:~/trash$ cat ccm.pl
#!/usr/bin/perl
while(<DATA>){
/.*:\d+\s+(.*)\[(\d+)x(\d+)\](\d{4})\..*/;
chomp;
push @nontrie,[$_,$2,$3,$4];
}
print "@$_\n" for @nontrie;
__END__
-rwxrwx--- 1 53460 2007-10-07 02:29 600px-V838_Mon_HST[600x600]1999.jpg
-rwxrwx--- 1 69991 2007-10-07 02:27 739px-Omega_Nebula[739x600]1996.jpg
-rwxrwx--- 1 37021 2007-10-07 02:26 NGC2080[600x601]1998.jpg
-rwxrwx--- 1 138525 2007-10-07 02:25 603px-Crab_Nebula[603x600]1997.jpg
-rwxrwx--- 1 525752 2007-10-07 02:24 ESO97-13[1280x1280]1999.jpg
-rwxrwx--- 1 88098 2007-10-07 02:24 600px-ESO97-13[600x601]1999.jpg
lami20j@debian:~/trash$ perl ccm.pl
-rwxrwx--- 1 53460 2007-10-07 02:29 600px-V838_Mon_HST[600x600]1999.jpg 600 600 1999
-rwxrwx--- 1 69991 2007-10-07 02:27 739px-Omega_Nebula[739x600]1996.jpg 739 600 1996
-rwxrwx--- 1 37021 2007-10-07 02:26 NGC2080[600x601]1998.jpg 600 601 1998
-rwxrwx--- 1 138525 2007-10-07 02:25 603px-Crab_Nebula[603x600]1997.jpg 603 600 1997
-rwxrwx--- 1 525752 2007-10-07 02:24 ESO97-13[1280x1280]1999.jpg 1280 1280 1999
-rwxrwx--- 1 88098 2007-10-07 02:24 600px-ESO97-13[600x601]1999.jpg 600 601 1999
lami20j,
Il s'agit simplement d'enlever premierement le mot reverse. Deuxiemement, j'ai lu dans perlfunc par rapport a la commande sort que pour inverser le tri on doit inverser $a et $b. C'est que j'ai fait.
Donc, le script qui fonctionne en ligne de commande est le suivant :
#!/usr/bin/perl
while(<>){
/.*:\d+\s+(.*)\[(\d+)x(\d+)\](\d{4})\..*/;
chomp;
push @nontrie,[$_,$2,$3,$4];
}
@trie = map {$_->[0]}
sort {
$b->[1] <=> $a->[1]
||
$b->[2] <=> $a->[2]
||
$b->[3] <=> $a->[3]
}
map { $_ } @nontrie;
print "$_\n" for @trie;
Je comprend maintenant que la commande ls -gG donne le premier champ. Je croyais que ca donnait en tout 6 champs. Je comprend mieux la facon dont tu procedes maintenant.
Merci encore
Il s'agit simplement d'enlever premierement le mot reverse. Deuxiemement, j'ai lu dans perlfunc par rapport a la commande sort que pour inverser le tri on doit inverser $a et $b. C'est que j'ai fait.
Donc, le script qui fonctionne en ligne de commande est le suivant :
#!/usr/bin/perl
while(<>){
/.*:\d+\s+(.*)\[(\d+)x(\d+)\](\d{4})\..*/;
chomp;
push @nontrie,[$_,$2,$3,$4];
}
@trie = map {$_->[0]}
sort {
$b->[1] <=> $a->[1]
||
$b->[2] <=> $a->[2]
||
$b->[3] <=> $a->[3]
}
map { $_ } @nontrie;
print "$_\n" for @trie;
Je comprend maintenant que la commande ls -gG donne le premier champ. Je croyais que ca donnait en tout 6 champs. Je comprend mieux la facon dont tu procedes maintenant.
Merci encore
J'ai pensé à changer l'ordre de tri, mais comme je suis paresseux je me suis dit que peut être ça marche avec reverse :-)
Salut lami20j,
Je vais étudier ton dernier script cette semaine. Je me suis rendu compte finalement que pour écrire les scripts que je voulais faire, je dois surtout maitriser les expressions régulières. Je vais donc lire le document PERLRETUT qui semble, à première vue, une très bonne référence. Ca devrait etre plus facile pour moi par la suite.
Je vais donc poser le problème comme résolu mais je reviendrai surement avec d'autres questions sur ton script.
Donc, merci et à la prochaine, :-))
Je vais étudier ton dernier script cette semaine. Je me suis rendu compte finalement que pour écrire les scripts que je voulais faire, je dois surtout maitriser les expressions régulières. Je vais donc lire le document PERLRETUT qui semble, à première vue, une très bonne référence. Ca devrait etre plus facile pour moi par la suite.
Je vais donc poser le problème comme résolu mais je reviendrai surement avec d'autres questions sur ton script.
Donc, merci et à la prochaine, :-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour lami20j,
Etant donne que tu as resolu le probleme de cette discussion, j'aimerais le clore et passer a une autre discussion sur Perl mais cette fois-ci dans le forum Programmation. Je crois que ce serait plus approprie. Si tu ne le frequentes pas, je vais ouvrir la discussion ici, dans le forum Linux/Unix.
Apres avoir lu les pages man de PERLRETUT, je comprends beaucoup mieux ton script qui semble tres clair. Donc, je croyais etre en mesure d'ecrire moi-meme un script tres semblable au tien mais je n'ai pas reussi. Je croyais que c'etait dans le sac mais ce n'est pas encore le cas. Il faut croire que je dois encore etudier...
Salut
Etant donne que tu as resolu le probleme de cette discussion, j'aimerais le clore et passer a une autre discussion sur Perl mais cette fois-ci dans le forum Programmation. Je crois que ce serait plus approprie. Si tu ne le frequentes pas, je vais ouvrir la discussion ici, dans le forum Linux/Unix.
Apres avoir lu les pages man de PERLRETUT, je comprends beaucoup mieux ton script qui semble tres clair. Donc, je croyais etre en mesure d'ecrire moi-meme un script tres semblable au tien mais je n'ai pas reussi. Je croyais que c'etait dans le sac mais ce n'est pas encore le cas. Il faut croire que je dois encore etudier...
Salut
Salut,
passer a une autre discussion sur Perl mais cette fois-ci dans le forum Programmation. Je crois que ce serait plus approprie.
Oui en effet.
Si tu ne le frequentes pas, je vais ouvrir la discussion ici, dans le forum Linux/Unix.
Il n'y a pas que moi sur CCM ;-), toutefois je ne loupe pas une discussion sur Perl ;-)
passer a une autre discussion sur Perl mais cette fois-ci dans le forum Programmation. Je crois que ce serait plus approprie.
Oui en effet.
Si tu ne le frequentes pas, je vais ouvrir la discussion ici, dans le forum Linux/Unix.
Il n'y a pas que moi sur CCM ;-), toutefois je ne loupe pas une discussion sur Perl ;-)
Précédent
- 1
- 2