# PERL extraction valeurs

**URL:** <https://www.debian-fr.org/t/perl-extraction-valeurs/52601>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 11:24 UTC](https://www.debian-fr.org/t/perl-extraction-valeurs/52601 "2016-02-21T11:24:15Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![\_seb](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/_/90db22/32.png) [@\_seb](https://www.debian-fr.org/u/_seb)\
**Post date:** [Février 21, 2016, 11:24 UTC](https://www.debian-fr.org/t/perl-extraction-valeurs/52601/1 "2016-02-21T11:24:15Z")

</div>

Bonjour ![8)](https://www.debian-fr.org/uploads/default/original/1X/ae031e9834d19166598edd060b063d44f1829139.gif "Cool")

Je m’essaye à PERL depuis quelques jours mais je butte sur comment extraire une ou des valeurs d’une variable.

Voici le contenu de la variable à traiter :

```auto
N° Val1-1 Val2-1 Val3-1 Val4-1
a0/1 1370380983 224275 5977182 11519416
a0/2 2950137424 10842680 5901202 11460799

N° Val1-2 Val2-2 Val3-2 Val4-2
a0/1 1092839685 132161 5280599 9771119
a0/2 35382434282 89595306 1172398 933271
```

Je voudrais par exemple pour le N° a0/2 récupérer les valeurs Val1-1 et Val1-2 afin de pouvoir afficher le résultat de ces valeurs.

Avez-vous une piste ou une idée ?

Merci

---

<div class="post-metadata">

**Author:** ![yap22](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/y/9e8a1a/32.png) [@yap22](https://www.debian-fr.org/u/yap22)\
**Post date:** [Février 21, 2016, 11:25 UTC](https://www.debian-fr.org/t/perl-extraction-valeurs/52601/2 "2016-02-21T11:25:00Z")

</div>

Bonjour,

Regarde du coté de la fonction split.  
Exemple pour récupérer les champs dans un tableu, le caractère de séparation étant l’espace :

```auto

```

---

<div class="post-metadata">

**Author:** ![\_seb](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/_/90db22/32.png) [@\_seb](https://www.debian-fr.org/u/_seb)\
**Post date:** [Février 21, 2016, 11:25 UTC](https://www.debian-fr.org/t/perl-extraction-valeurs/52601/3 "2016-02-21T11:25:00Z")

</div>

Bonjour yap22,

Merci pour ta réponse, j’utilise déjà le split mais je n’arrive pas à récupérer la ligne qui m’interesse…

J’essaye de voir si je peux utiliser grep ![:115](https://www.debian-fr.org/uploads/default/original/1X/f0b4ead290aa124671b5f77e5c5e1073057a630b.gif "eureka")

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 11:25 UTC](https://www.debian-fr.org/t/perl-extraction-valeurs/52601/4 "2016-02-21T11:25:06Z")

</div>

Je ne comprends pas très bien. C’est un fichier que tu lie ?

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 11:28 UTC](https://www.debian-fr.org/t/perl-extraction-valeurs/52601/5 "2016-02-21T11:28:05Z")

</div>

Ça peut-être ?

`$ligne = "abc\ndef\nghi\n";
@lignes = split /\n/, $ligne;
foreach (@lignes) {
  @champs = split /\s+/, $_;
  print join(" ***", @champs);
}`

---

<div class="post-metadata">

**Author:** ![Deathsceythe](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/ed655f/32.png) [@Deathsceythe](https://www.debian-fr.org/u/Deathsceythe)\
**Post date:** [Février 21, 2016, 12:39 UTC](https://www.debian-fr.org/t/perl-extraction-valeurs/52601/6 "2016-02-21T12:39:52Z")

</div>

Bonjour,

Pour ton problème, je pense qu’il faut trouver une façon de structurer les données lues dans le fichier.  
Par exemple, faire une table de hash avec comme clé un couple du type “a0/1-ValX-Y” …

Sinon voici un bout de code qui lie chaque ligne et découpe celle-ci.  
Chaque éléments de la ligne sont stockés dans un array.

J’espère t’avoir aidé, bon code …

```auto
#!/usr/bin/perl

use strict;
use warnings;

my @array;
my $val;

open FILE, "var.txt";

while (<FILE>) {

   @array = split(" ", $_);

   foreach $val (@array) {
      print "<$val>";
   }
   print "\n--";
}
close FILE;
```
