Rechercher : dans
Par :

Manipulation de tableaux en perl

Dernière réponse le 24 oct 2007 à 15:59:37 Alain T, le 24 oct 2007 à 15:14:39 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « Manipulation de tableaux en perl » dans :
Manipulations élémentaires des tableaux sous MatLab VoirSommaire I. Stockage des tableaux II. L'indexation linéaire II.1. Accéder à un élément d'un tableau en utilisant l'indexation linéaire II.2. Passer d'une indexation à l'autre II.2.1. La fonction ind2sub II.2.2. La fonction sub2ind III. La...
Décaler les éléments d'un tableau (Rotation) -Récursivité- VoirVoici une procédure récursive qui permet de décaler tous les éléments d’un tableau d’une position à droite à partir de la position p Procedure Decaler (Var t : Tab; p, n : integer); Begin If p
Javascript - Manipulation des contrôles clavier VoirManipulation des contrôles clavier Cette astuce a pour but de vous faire découvrir la (ou du moins une) manière de contrôler les évènements clavier en javascript. Cela vous permettra de contrôler/attribuer les/des comportements particuliers à...
Télécharger Tables multimédia VoirEn général les enfants ont tendance à ne pas vouloir étudier et les parents perdent parfois patience à leur apprendre. Peut-être qu’il est temps d’essayer quelque chose de plus pratique avec plus résultats. Tables multimédia donne la possibilité...
VBScript - Les fonctions de manipulation de tableaux VoirLes fonctions de manipulation de tableaux Fonction Description Array(arglist) Crée un Variant contenant un tableau. L'argument arglist est la liste des valeurs, séparées par des...
Tableur - Les fonctions VoirLa notion de fonction Les tableurs fournissent généralement un grand nombre de fonctions intégrées permettant de réaliser des manipulations de données. Il en existe des centaines, catégorisées de la façon suivante : Les fonctions arithmétiques...
Tableaux HTML VoirUtilisation de tableaux Il est souvent utile de présenter des informations mieux structurées qu'avec des listes. Les tableaux permettent de les afficher en lignes et en colonnes. Les tableaux sont définis comme étant des suites de lignes. Un...

1

lami20j, le 24 oct 2007 à 15:46:46

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

Répondre à lami20j

2

lami20j, le 24 oct 2007 à 15:51:48

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__

lami20j

Répondre à lami20j

3

 christophe1371, le 24 oct 2007 à 15:59:37

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);
}

Répondre à christophe1371
Collection CommentÇaMarche.net