OVH Cloud OVH Cloud

toujours mes pb de

2 réponses
Avatar
kurtz le pirate
'soir,

encore moi. je pensais avoir trouver une solution avec $/="\r" mais pas
dutout ! le fait de changer le <return> fait que des expressions comme :
$line =~ /[m|L|C]\Z/ ne fonctionne plus !!!

j'en ai un peu marre alors maintenant je fais ça :

----
my $eps_source_file = "nom_du_fichier.eps";
my $working_file = "*".$eps_source_file;
my $command = "perl -p -e 's/\r/\n/g' <".$eps_source_file.">
".$working_file;
my $result = `$command`;

open(EPSFILE,"<$working_file") || die("Impossible d'ouvrir le
fichier\n");
...
...
close(EPSFILE);
unlink $working_file;
----

c'est pas top mais ça marche.
si vous avez des critiques, surtout, pas d'hésitation :))
klp

2 réponses

Avatar
Benoit Izac
Bonjour,

le 08/03/2005 à 19:13, kurtz le pirate a écrit
dans le message :

encore moi. je pensais avoir trouver une solution avec $/="r" mais
pas dutout ! le fait de changer le <return> fait que des expressions
comme : $line =~ /[m|L|C]Z/ ne fonctionne plus !!!

[...]


c'est pas top mais ça marche.
si vous avez des critiques, surtout, pas d'hésitation :))
klp


Essaye ça :

#!/usr/bin/perl
use warnings;
use strict;

my $f = "fichier.eps";

open(F, "< $f")
or die "Impossible d'ouvrir $f : $!n";

$/ = "r";
my $i;

while (<F>) {
chomp; # surement ce qu'il te manque
if (/^n$/) {
$i++;
} elsif ($i && /^d.*[m|L|C]$/) {
print $i++, " : $_n";
}
}

close(F);
__END__

--
Benoit Izac

Avatar
Paul Gaborit
À (at) Tue, 08 Mar 2005 19:13:03 +0100,
kurtz le pirate écrivait (wrote):
encore moi. je pensais avoir trouver une solution avec $/="r" mais pas
dutout ! le fait de changer le <return> fait que des expressions comme :
$line =~ /[m|L|C]Z/ ne fonctionne plus !!!


Voici une solution (pas testée) :

{
local $/ = "r"; # pour lire les lignes en codage MacRoman

open my $epsfile_fh, "<", $working_file
or die "Impossible d'ouvrir le fichiern";
while (<$epsfile_fh>) {
s/r/n/g; # pour adopter une fin de ligne à la Unix
# ..traitements...
}
close $epsfile_fh;
}

C'est quand même plus simple et plus rapide que de réencoder entièrement le
fichier au préalable.

PS: j'utilise la syntaxe récente du 'open' (3 arguments et création implicite
du FH) qui n'est utilisable qu'avec perl 5.8.x mais ce n'est pas absolument
nécessaire.

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>