A voir également:
- [perl] commentaires
- Afficher les commentaires word - Guide
- Pourquoi ne peut on pas voir tous les commentaires sur facebook ✓ - Forum Facebook
- Les commentaires sur cette publication ont été restreints ✓ - Forum Instagram
- Problème affichage commentaires Facebook. ✓ - Forum Facebook
- Clément a partagé le fichier mme bovary. il a écrit des commentaires dans le document. quel est le 2e commentaire ? ✓ - Forum Windows 7
2 réponses
Salut,
j'ai fait quelques modifications
j'ai fait quelques modifications
#! /usr/bin/perl # use warnings;use strict; # use warnings c'est une pragma de portée lexicale qui permet # de contrôler les averstissements de Perl # # use strict - pragma qui impose 3 restrictions # 1. les variables devront être déclarées # 2. interdiction des références symboliques # 3. les chaînes litterales doivent être entre guillemets # # Pragma = c'est une indication donnée au compilateur # open LIRE,"resultado2.txt" # ouverture d'un handle de fichier en lecture or die "E/S: $!\n";# quitte le programme avec message d'erreur, # si besoin open ECRIRE,">>resultado3.txt" # ouverture d'un handel de fichier en mode # écriture (mode ajouter) or die "E/S: $!\n"; # quitte le programme avec un message d'erreur # a eviter d'utiliser STDOUT comme nom d'un handle de fichier # STDOUT est un handle prédefini ( la sortie par défaut ) # # en mettant dans la boucle l'ouverture d'un handle # comme tu l'as fait ce n'est pas très efficace # à chaque lecture de ligne le handle est ouvert et puis traitement fermé # imagine un traitement d'un fichier de ~123 lignes (et ça en 64 bits) # while (<LIRE>){ # utilisation d'opérateur diamant pour lire le handle # j'écrit dans le handle le contenu des paranthèses # si la ligne a le format: ttt (uuu) è_udif # donc quelque chose ou rien(quelque chose)quelque chose ou rien print ECRIRE "$1\n" if /.*\((.*)\).*/; } close LIRE; close ECRIRE; # Explication de la regex # /.*\((.*)\).*/ # # le 1er .* va avaler toutes la ligne et ensuite sous contrainte # va laisser tout pour reconnaître une paranthèse ouvrante # une fois trouvée la paranthèse (.*) la regex avale de nouveau tout # et ensuite sous contrainte va rennoncer a son butin pour reconnaître # la paranthèse fermante ) # et le contenu des ( et ) est stocké dans $1 # le dernier .* avale le reste de la ligne # # Tout ce qui est écrit après __END__ peut être avec le handle DATA # dans ton cas bas besoinEt l'exécution
lami20j@ubuntu:~/bin/my_deb_perl$ cat resultado2.txt jjj(lll)kk aaaaaaa hhh(uuu)kkk $$$(;;) ---jkj(kjk lami20j@ubuntu:~/bin/my_deb_perl$ perl ccm_comment_vincent.pl lami20j@ubuntu:~/bin/my_deb_perl$ cat resultado3.txt lll uuu ;; lami20j@ubuntu:~/bin/my_deb_perl$lami20j
Re,
à savoir que la regex que tu utilises c'est vraiement banale.
il faut savoir la structure de fichier et ce que tu veux obtenir comme résultat pour pouvoir construire la regex
Regarde par exemple ce qu'on obtiens avec le même script mais pas les mêmes données en entrées (en fait j'ai ajouté une ligne)
à savoir que la regex que tu utilises c'est vraiement banale.
il faut savoir la structure de fichier et ce que tu veux obtenir comme résultat pour pouvoir construire la regex
Regarde par exemple ce qu'on obtiens avec le même script mais pas les mêmes données en entrées (en fait j'ai ajouté une ligne)
lami20j@ubuntu:~/bin/my_deb_perl$ cat resultado2.txt jjj(lll)kk aaaaaaa hhh(uuu)kkk $$$(;;) ---jkj(kjk paran(th(èses)imbriquées)ça ne (marche pas(comme tu veux)) lami20j@ubuntu:~/bin/my_deb_perl$ perl ccm_comment_vincent.pl lami20j@ubuntu:~/bin/my_deb_perl$ cat resultado3.txt lll uuu ;; comme tu veux) lami20j@ubuntu:~/bin/my_deb_perl$lami20j