Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question sur la décomposition d'une variable

3 réponses
Avatar
Steve Houle
Bonjour,

J'ai une variable que je doit décomposer en plusieurs parties.
Normalement, j'utilise la fonction split(). Mon problème, c'est que je
doit décomposer sur des espaces du genre "Date Heure ID Host" mais le
nombre d'espace entre le 3ième et le 4ième champs n'est pas forcement
constant. Il peut y avoir 1, 2, 3 voir 4 espace.

Lorsque je fais :
my @split_var = split / /,$logfile_line;

J'ai mes trois premiers champs dans les variables $split_var[0]
$split_var[1] et $split_var[2]. Par contre, lorsque j'ai 2 espace ou plus
entre le champ 3 et 4, mon 4ième champ peut se retrouver dans $split_var[4]
voir même dans $split_var[6] si il y a beaucoup d'espace.

Alors, comment je fais pour lui dire que peu importe le nombre d'espace
qu'il y a entre les chaînes, c'est là que je veux splitter.

Remarque : Le fichier est générer automatiquement par une application métier
et comporte une dizaine de champ (j'en ai mis juste 4 pour l'exemple).
L'information dans chaque champ ne contient pas d'espace. L'espace est
juste un caractère de délimitation mais il y a deux champ d'ID qui sorte en
longueur fixe. Donc, quand l'ID n'est pas asser long, il met des espaces
pour compléter.

Voila.

Steve.

3 réponses

Avatar
Pierre ALAIN
Bonjour,

J'ai une variable que je doit décomposer en plusieurs parties.
Normalement, j'utilise la fonction split(). Mon problème, c'est que je
doit décomposer sur des espaces du genre "Date Heure ID Host" mais le
nombre d'espace entre le 3ième et le 4ième champs n'est pas forcement
constant. Il peut y avoir 1, 2, 3 voir 4 espace.

Lorsque je fais :
my @split_var = split / /,$logfile_line;



pour e^tre insensible au nombre d'espaces (qui peuvent ^etre de vrais
espaces, des tabulations, ...), j'ai tendance a` utiliser
/s+/

cordialement

--
E-mail : echo ` | rot13`

Avatar
Nicolas George
Pierre ALAIN wrote in message <d1c6pf$l04$:
pour e^tre insensible au nombre d'espaces (qui peuvent ^etre de vrais
espaces, des tabulations, ...), j'ai tendance a` utiliser
/s+/


Pas la peine :

« As a special case, specifying a PATTERN of space (' ') will split on white
space just as "split" with no arguments does. »

Avatar
Steve Houle
Nicolas George wrote:

Pierre ALAIN wrote in message <d1c6pf$l04$:
pour e^tre insensible au nombre d'espaces (qui peuvent ^etre de vrais
espaces, des tabulations, ...), j'ai tendance a` utiliser
/s+/


Pas la peine :

« As a special case, specifying a PATTERN of space (' ') will split on
white space just as "split" with no arguments does. »



Merci a vous deux, ça fonctionne parfaitement.