Re: aide sur perl (suite)

トップ ページ

このメッセージに返信
著者: Patrice Karatchentzeff
日付:  
To: guilde
題目: Re: aide sur perl (suite)
Le Thu, 14 Nov 2002 11:20:28 +0100
scalp@??? écrivait :

> From: "anne aublanc" <anne.aublanc@???>
> Sent: Thursday, November 14, 2002 11:05 AM
>
> > | > La ligne que j'ai écrite pour le test :
> > | > if ($ligne =~ m!(.*?);(.*?)$!gi)
>
> je pense que vous vous compliquez un peu la tache, ou alors c moi qui
> ait rate un passage....
> je viens d'ecrire le bout de code suivant :
>
> @a = ('tt\'tt\'\'tt;\'tt\'\'', 'qsdfqsfsf;sqfsfd\'sfqfssq');
> for ($i=0; $i<@a; $i++) {
>     if ($a[$i] =~ /^(.*?);(.*?)$/) {
>         print "== ".$1." == ".$2." =="."\n";
>     }
> }


J'ai filé en privé à Anne une solution bien plus simple :

#!/soft/contrib/S2/bin/perl -w

$file     = $ARGV[0] ;
$fullname = "";
$address  = "";


open(FILE, $file) || die "$file file doesn't exist : $!" ;
while(<FILE>)
  {
     if ($_ !~ /^$/)
       {
     ($fullname,$address) = split(/;/,$_);
     print "$fullname,  ,$address \n";     
       }
  }


ou bien sûr l'argument est le fichier d'enregistrement.

Pas besoin de regexp, donc plus rapide et moins coûteux.

Sinon,

#!/soft/contrib/S2/bin/perl -w

$file     = $ARGV[0] ;
$fullname = "";
$address  = "";


open(FILE, $file) || die "$file file doesn't exist : $!" ;
while(<FILE>)
  {
    if ($_ =~ m/(.*?);(.*?)$/gi)
      {
     ($fullname,$address) = ($1,$2);
     print "$fullname,  ,$address \n";
      }
  }


fonctionne aussi parfaitement. Je pense qu'Anne a dû se prendre les
pieds dans le tapis ailleurs dans son programme.


PK
-- 
Patrice KARATCHENTZEFF
STMicroelectronics           Tel:  04-76-92-63-81
850, rue Jean Monnet
38926 CROLLES Cedex, France  Courriel: patrice.karatchentzeff@???