J'ai le code ci dessous qui est censé envoyer sur stdout (dans un premier
temps) les lignes d'un fichier passé en argument mais les lignes utiles,
sans commentairres ni lignes vides. Je n'arrive pas à "trouver la sortie",
car il ne fais pas ce que je veux qu'il fasse...
(En fait il me rajoute même une ligne vide à chaque fois...)
Voici le contenu du fichier de test:
mihamina-localhost>>>>cat test.txt
l1
# c1
l2
# c2
l3
Concernant le style, oui j'aime bien le style recursif/fonctionnel. ça m'a
séduit. J'espère gérer la plupart de ce que j'aurais à faire avec ce style,
si possible.
--
Un CMS Français à découvrir: CPS. (http://www.cps-project.org)
Hébergement gratuit de sites Zope, Plone, et CPS: http://www.objectis.org
Un lien qui peut servir:
http://www.google.fr/search?q=aspo+infogerance+serveur
Je ne connais que très peu Perl, mais il me semble qu'une manière d e le faire pourrait être :
use IO::File; my $in = new IO::File('<log'); while(<$in>){ my $L = $_; if(not($L=~/^#/ or $L=~/^ *$/)){
penser à utiliser unless à la place de if not
print $L; } } } $ time perl comments.pl > /dev/null real 0m2.297s
(1,5 Million de lignes quand même). Ce qui est même plus rapide que tous les autres, mais un gourou de Pe rl passera peut-être par là pour en faire une version d'une ligne et d emi encore plus rapide.
Je ne suis pas un gourou de Perl mais ceci semble marcher : cat log | perl -ne 'print unless (/^ *$/ || /^#/)'
Jean-Pierre
L'utilisation du cat suivi d'un pipe m'a toujours choqué
pourquoi ne pas utiliser un simple redirection de stdin ? on évite le lancement d'un processus. perl -ne 'print unless (/^ *$/ || /^#/)' < log
Je ne connais que très peu Perl, mais il me semble qu'une manière d e le
faire pourrait être :
use IO::File;
my $in = new IO::File('<log');
while(<$in>){
my $L = $_;
if(not($L=~/^#/ or $L=~/^ *$/)){
penser à utiliser unless à la place de if not
print $L;
}
}
}
$ time perl comments.pl > /dev/null
real 0m2.297s
(1,5 Million de lignes quand même).
Ce qui est même plus rapide que tous les autres, mais un gourou de Pe rl
passera peut-être par là pour en faire une version d'une ligne et d emi
encore plus rapide.
Je ne suis pas un gourou de Perl mais ceci semble marcher :
cat log | perl -ne 'print unless (/^ *$/ || /^#/)'
Jean-Pierre
L'utilisation du cat suivi d'un pipe m'a toujours choqué
pourquoi ne pas utiliser un simple redirection de stdin ? on évite le
lancement d'un processus.
perl -ne 'print unless (/^ *$/ || /^#/)' < log
Je ne connais que très peu Perl, mais il me semble qu'une manière d e le faire pourrait être :
use IO::File; my $in = new IO::File('<log'); while(<$in>){ my $L = $_; if(not($L=~/^#/ or $L=~/^ *$/)){
penser à utiliser unless à la place de if not
print $L; } } } $ time perl comments.pl > /dev/null real 0m2.297s
(1,5 Million de lignes quand même). Ce qui est même plus rapide que tous les autres, mais un gourou de Pe rl passera peut-être par là pour en faire une version d'une ligne et d emi encore plus rapide.
Je ne suis pas un gourou de Perl mais ceci semble marcher : cat log | perl -ne 'print unless (/^ *$/ || /^#/)'
Jean-Pierre
L'utilisation du cat suivi d'un pipe m'a toujours choqué
pourquoi ne pas utiliser un simple redirection de stdin ? on évite le lancement d'un processus. perl -ne 'print unless (/^ *$/ || /^#/)' < log