[Perl] Lecture de fichier+calcul en fct indx
Résolu
Mrkanter
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
voilà mon problème, je dois lire dans un fichier 2 lignes:
la première ressemble à ça:
ABC123|ABC456|DEF987|DEF654|DEF321...
La 2 eme ligne correspond aux valeurs de la 1 e ligne:
10|2|54|65|12
je dois regrouper les noms de la premiere ligne si les 3 premieres lettres sont identiques, (ABC: ABC123, ABC456 et DEF: DEF987, DEF654, DEF321), ABC devra contenir le total des ABC soit ABC=10+2=12 idem pour DEF, DEF=54+65+12=131.
Je ne sais absolument pas comment procéder (je débute en Perl). Pouvez vous m'aidez ?
Merci
voilà mon problème, je dois lire dans un fichier 2 lignes:
la première ressemble à ça:
ABC123|ABC456|DEF987|DEF654|DEF321...
La 2 eme ligne correspond aux valeurs de la 1 e ligne:
10|2|54|65|12
je dois regrouper les noms de la premiere ligne si les 3 premieres lettres sont identiques, (ABC: ABC123, ABC456 et DEF: DEF987, DEF654, DEF321), ABC devra contenir le total des ABC soit ABC=10+2=12 idem pour DEF, DEF=54+65+12=131.
Je ne sais absolument pas comment procéder (je débute en Perl). Pouvez vous m'aidez ?
Merci
A voir également:
- [Perl] Lecture de fichier+calcul en fct indx
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
4 réponses
Salut,
Les champs sont toujours séparés par | ?
Il y a toujours une valeur correspondante dans la deuxième ligne?!
Les champs sont toujours séparés par | ?
Il y a toujours une valeur correspondante dans la deuxième ligne?!
Re,
Encore une chose.
La 1ère ligne peut contenir des doublons?!
Par exemple avoir ABC123 deux fois.
Encore une chose.
La 1ère ligne peut contenir des doublons?!
Par exemple avoir ABC123 deux fois.
Les champs sont toujours séparés par |.
Non, il ne peut pas y avoir de doublons et oui il y a toujours une valeur sur la deuxième ligne qui correspond au nom de la première.
Non, il ne peut pas y avoir de doublons et oui il y a toujours une valeur sur la deuxième ligne qui correspond au nom de la première.
Salut,
Voilà
Voilà
lami20j@debian:~/trash/ccm_perl$ cat somme_lig.pl #!/usr/bin/perl use strict;use warnings; my(@l,@n,%h,%somme); while(<DATA>){ chomp; @l=split /\|/ if /^[A-Z]/; @n=split /\|/ if /^[0-9]/; } @h{@l}=@n; foreach (sort keys %h){ /^(...)/; push @{$somme{$1}},$h{$_}; } foreach (sort keys %somme){ my $s = join "+",@{$somme{$_}}; $s=~s/\s*//g; print "$_ = $s = ",eval $s,"\n"; } __END__ ABC123|ABC456|DEF987|DEF654|DEF321 10|2|54|65|12 lami20j@debian:~/trash/ccm_perl$ perl somme_lig.pl ABC = 10+2 = 12 DEF = 12+65+54 = 131