Perl + expressions régulières

Bonjour,

SVP pourquoi le programme et expression regul. ci-dessous n'arrive pas a me trouver une ligne telle que :

babil (noun):kinderpraat

************

#!/usr/bin/perl

use strict; #utilise les données déclarées
#use LWP::Simple; check this on man
my $ligne;
my $clean;
my $pos;
my $cleaner;
my $txt;

open(FILEINPUT,"$ARGV[0]") || die "erreur de lecture de fichier :$!";
while ($ligne=<FILEINPUT>){
if ($ligne =~ /^[a-z][a-z]*\s\(.*\)\:[a-z][a-z]*/){

#$clean=$1;
#print $clean;
print "$ligne\n";
}

#$clean=$ligne;
#$clean=~s/"[a-z][a-z]*//g;
#$clean=~s/\^[a-z][a-z]*//g;
}

close(FILEINPUT);

1 réponse

  1. Contributeur
    hello
    il fonctionne chez moi
     $ cat a3
    111
    babil (noun):kinderpraat
    222
    $ 
    $ ./p5 a3
    babil (noun):kinderpraat
    
    $
    
    0
    1. Comment avez vous fait car pour moi en sortie j'ai un fichier vide?

      par exemple si je fait sur cygwin

      perl prog.pl text.txt > sortie.txt

      le fichier sortie est vide bien que le fichier text.txt contient les données sur lesquelles je souhaite appliquer le programme.

      Merci
      0
    2. Contributeur
      cygwin, c'est Windows, je suis sur Linux, peut être des problèmes de fin de lignes ?
      open(FILEINPUT,"$ARGV[0]") || die "erreur de lecture de fichier :$!"; 
      while ($ligne=<FILEINPUT>){ 
      print "$ligne"; 
      }

      affiche bien tout le fichier ?
      0
    3. Je n'ai pas compris votre question - que voulez vous dire par affiche bien tout le fichier?

      Toutefois si je reduis l'exp. regul. à /^[a-z][a-z]*/ j'arrive à avoir une sortie ce qui me fait penser que peut être le problème commence sur \s dans cette expression regul.

      /^[a-z][a-z]*\s\(.*\)\:[a-z][a-z]*/
      0
    4. Contributeur
      oui, il faut aller pas par pas, me demande était de tester sans l'expression.
      essaye de remplacer, dans le script et dans le fichier \s et l'espace par X
      essayer aussi ( plutot que \(
      0
    5. ça ne marche tjr pas. Je vais reessayer encore plus tard. J'aurais besoin après de faire d'autre manipulation avec le script et pour l'instant je n'ai pas trouvé comment faire.

      Par exemple sur une ligne comme:

      babiller (verb):babbelen;kleppen;kletsen" bébé(noun):brabbelen

      Pour avoir

      babiller (verb): babbelen
      babiller (verb): kleppen
      babiller (verb): kletsen
      babiller (noun):brabbelen


      Aurais vous une idée comment je peux proceder, si je peux utilier "if" les expressions regul. un tableau?
      0