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`;
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
Bonjour,
le 08/03/2005 à 19:13, kurtz le pirate a écrit
dans le message <kurtzlepirate-891B4D.19130308032005@news12-e.proxad.net> :
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";
}
}
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
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/>
À (at) Tue, 08 Mar 2005 19:13:03 +0100,
kurtz le pirate <kurtzlepirate@yahoo.fr> é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/>
À (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/>