Les Allergies
Alimentaires
Posez votre question Signaler

Manipulation de tableaux en perl

Alain T - Dernière réponse le 24 oct. 2007 à 15:59
Bonjour,
j'aurais besoin d'un peu d'aide ne Perl. Je fais du Perl 2 fois par ans, et je galère pas mal avec la manipulation de tableaux (je ne suis pas informaticien ni développeur, mais médecin).
Je pars de deux tableaux :
@Vrac = Lundi Novembre Mardi Mercredi
@Semaine = Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimnanche
Je souhaiterais lire chaque valeur de mon tableau @Vrac, et vérifier la présence de la valeur en cours de lecture dans le tableau @Semaine.
Je voudrias alors nettoyer mon tableaun @Vrac de svaleurs non conformes (c'est à dire absentes du tableau) et mettre ces valeurs hors norme dans un tableau @anomalie.
Au final je souhaiterais avoir les tableaux suivants :
@Vrac = Lundi Mardi Mercredi
@anomalie = Novembre
Quelqu'un pourrait m'aider ?
Merci.
Alain.
Lire la suite 

Manipulation de tableaux en perl »

3 réponses
Réponse
+1
moins plus
Salut,

root@debian:~# cat ccm.pl
#!/usr/bin/perl
use strict;use warnings;

my @vrac = qw/Lundi Novembre Mardi Mercredi/;
my @semaine = qw/Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche/;

my %vu_dans_semaine;
my @pas_dans_vrac;
my(@normal,@anomalie);

@vu_dans_semaine{@semaine} = ();

for (@vrac){ push @anomalie,$_ unless exists $vu_dans_semaine{$_};
             push @normal,$_   if exists $vu_dans_semaine{$_}    }

print "\@normal = @normal\n\@anomalie = @anomalie\n";
__END__
root@debian:~# perl ccm.pl
@normal = Lundi Mardi Mercredi
@anomalie = Novembre
root@debian:~#
--

lami20j
Ajouter un commentaire
Réponse
+1
moins plus
ou plus court avec l'opérateur ternaire ?:
#!/usr/bin/perl
use strict;use warnings;

my @vrac = qw/Lundi Novembre Mardi Mercredi/;
my @semaine = qw/Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche/;

my %vu_dans_semaine;
my @pas_dans_vrac;
my(@normal,@anomalie);

@vu_dans_semaine{@semaine} = ();

for(@vrac){exists $vu_dans_semaine{$_}?push @normal,$_:push @anomalie,$_}

print "\@normal = @normal\n\@anomalie = @anomalie\n";
__END__
Ajouter un commentaire
Réponse
+0
moins plus
salut,

on utilise un tableau de hachage intermediaire (temp) pour pouvoir utiliser la fonction exists tres pratique pour vérifier si une clé existe

my @anomalie;
my @Vrac =(Lundi,Novembre,Mardi,Mercredi);
my @Semaine =(Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimnanche);

my %temp;
@temp{@Semaine} = 0..$#Semaine;

for my $val (@Vrac) {
if( ! exists $temp{$val} ) {
push (@anomalie,$val);
}
Ajouter un commentaire
Ce document intitulé « Manipulation de tableaux en perl » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?