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@???