J'essaye d'adapter ce petit script afin qu'il consid=E8re la ligne vide
comme la fin du premier bloc.
Je vous prie de m'aider.
use strict;
use warnings;
my @ar =3D [];
my $i =3D 0;
while (<DATA>) {
chomp; next if !length();
if (/^\s*&\s*$/) {
$i =3D 0; next;
}
push @{$ar[$i]}, @{$ar[$i++]} ? '&'.$_ : $_;
}
for my $ar (@ar) {
print @{$ar},"\n";
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
Paul Gaborit
À (at) Fri, 11 Sep 2009 14:22:48 -0700 (PDT), fred écrivait (wrote):
J'essaye d'adapter ce petit script afin qu'il considère la ligne vide comme la fin du premier bloc.
Je vous prie de m'aider.
use strict; use warnings; my @ar = []; my $i = 0; while (<DATA>) { chomp; next if !length(); if (/^s*&s*$/) { $i = 0; next; } push @{$ar[$i]}, @{$ar[$i++]} ? '&'.$_ : $_; } for my $ar (@ar) { print @{$ar},"n";
La logiqe de votre script est bien compliquée pour un résultat qui ne marche pas complètement. Essayez de ne faire qu'une seule chose à la fois :
use strict; use warnings; my @ar; my @lignes; while (<DATA>) { chomp; # suppression des espaces autour d'un & s/^s*&s*$/&/; if ($_ eq "") { # une ligne vide déclenche le stockage # des lignes accumulées dans @ar push @ar, [@lignes]; @lignes = (); } else { # une ligne non vide est accumulée dans # le tableau des lignes push @lignes, $_; } } # on stocke les lignes accumulées dans @ar # si le fichier d'entrée ne se termine pas # par une ligne vide push(@ar, [@lignes]) if @lignes;
# on affiche le tableau de tableaux de lignes for my $li (@ar) { print @$li, "n"; }
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
À (at) Fri, 11 Sep 2009 14:22:48 -0700 (PDT),
fred <fred78980@yahoo.com> écrivait (wrote):
J'essaye d'adapter ce petit script afin qu'il considère la ligne vide
comme la fin du premier bloc.
Je vous prie de m'aider.
use strict;
use warnings;
my @ar = [];
my $i = 0;
while (<DATA>) {
chomp; next if !length();
if (/^s*&s*$/) {
$i = 0; next;
}
push @{$ar[$i]}, @{$ar[$i++]} ? '&'.$_ : $_;
}
for my $ar (@ar) {
print @{$ar},"n";
La logiqe de votre script est bien compliquée pour un résultat qui ne
marche pas complètement. Essayez de ne faire qu'une seule chose à la
fois :
use strict;
use warnings;
my @ar;
my @lignes;
while (<DATA>) {
chomp;
# suppression des espaces autour d'un &
s/^s*&s*$/&/;
if ($_ eq "") {
# une ligne vide déclenche le stockage
# des lignes accumulées dans @ar
push @ar, [@lignes];
@lignes = ();
} else {
# une ligne non vide est accumulée dans
# le tableau des lignes
push @lignes, $_;
}
}
# on stocke les lignes accumulées dans @ar
# si le fichier d'entrée ne se termine pas
# par une ligne vide
push(@ar, [@lignes]) if @lignes;
# on affiche le tableau de tableaux de lignes
for my $li (@ar) {
print @$li, "n";
}
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
À (at) Fri, 11 Sep 2009 14:22:48 -0700 (PDT), fred écrivait (wrote):
J'essaye d'adapter ce petit script afin qu'il considère la ligne vide comme la fin du premier bloc.
Je vous prie de m'aider.
use strict; use warnings; my @ar = []; my $i = 0; while (<DATA>) { chomp; next if !length(); if (/^s*&s*$/) { $i = 0; next; } push @{$ar[$i]}, @{$ar[$i++]} ? '&'.$_ : $_; } for my $ar (@ar) { print @{$ar},"n";
La logiqe de votre script est bien compliquée pour un résultat qui ne marche pas complètement. Essayez de ne faire qu'une seule chose à la fois :
use strict; use warnings; my @ar; my @lignes; while (<DATA>) { chomp; # suppression des espaces autour d'un & s/^s*&s*$/&/; if ($_ eq "") { # une ligne vide déclenche le stockage # des lignes accumulées dans @ar push @ar, [@lignes]; @lignes = (); } else { # une ligne non vide est accumulée dans # le tableau des lignes push @lignes, $_; } } # on stocke les lignes accumulées dans @ar # si le fichier d'entrée ne se termine pas # par une ligne vide push(@ar, [@lignes]) if @lignes;
# on affiche le tableau de tableaux de lignes for my $li (@ar) { print @$li, "n"; }
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>