Valeur non initialisé non nulle
Résolu
Nirdaven
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Salutation tous le monde,
Je m'adresse à vous car j'ai un problème dans un script et je ne comprend pas d'où il vient...
Je m'explique en vous montrant une partie du programme :
Je passe en entré un fichier .csv de la forme suivante :
25.0;70;123;52;;
999;18;82;5;;
...
et lorsque je lance mon programme, il ne me trouve pas d'erreur, mais je n'ai jamais la valeur 999999 à la place des "trou"/valeurs manquantes. J'ai essayé de remplacer if ( !$j ) (je suis sur et certain que l'erreur vient de la) par
- $j eq undef
- !defined($j)
- $j eq ""
- $j eq ''
mais rien ne marche alors que le print de vérification affiche bien rien a l'écran...
Auriez vous des idées pour récupérer les valeurs et mettre un chiffre exorbitant à la place des trous?
Merci d'avance de vos réponses
Nirdaven
Je m'adresse à vous car j'ai un problème dans un script et je ne comprend pas d'où il vient...
Je m'explique en vous montrant une partie du programme :
@fic=<FILE>; $taille=@fic; foreach (@fic) { if ( $l >= (8+$nbparam) && $l < $taille ) { $save=$_; chomp ($save); $save=~tr/./,/; $i=0; while ( defined($save) == 1 ) { ($j,$save)=($save =~ /^(-?\d*,*\d*);(.*)/);# <--- valeur de $j ? if ( !$j ) { $j=999999; $hash->{$k}->{$i}=$j; } else { print "$j\n";# <---- Vérification $j=~tr/,/./; $hash->{$k}->{$i}=$j; } $i++; } $k++; } $l++; }
Je passe en entré un fichier .csv de la forme suivante :
25.0;70;123;52;;
999;18;82;5;;
...
et lorsque je lance mon programme, il ne me trouve pas d'erreur, mais je n'ai jamais la valeur 999999 à la place des "trou"/valeurs manquantes. J'ai essayé de remplacer if ( !$j ) (je suis sur et certain que l'erreur vient de la) par
- $j eq undef
- !defined($j)
- $j eq ""
- $j eq ''
mais rien ne marche alors que le print de vérification affiche bien rien a l'écran...
Auriez vous des idées pour récupérer les valeurs et mettre un chiffre exorbitant à la place des trous?
Merci d'avance de vos réponses
Nirdaven
A voir également:
- Valeur non initialisé non nulle
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Valeur ascii - Guide
- Formule excel si contient texte alors valeur ✓ - Forum Excel
- Cette valeur ne correspond pas aux restrictions de validation des données pour cette cellule ✓ - Forum MacOS
- Calcul valeur entreprise excel gratuit - Télécharger - Comptabilité & Facturation
va matcher :
- à partir du début de la ligne
- une ligne commençant par un seul tiret, ou ne commençant pas par un tiret
- suivie d'un chiffre, ou de plusieurs chiffres à la suite, ou de zéro chiffres
- suivi d'une virgule, de plusieurs virgules à la suite, ou d'aucune virgule
- suivie d'un chiffre, ou de plusieurs chiffres à la suite, ou de zéro chiffres
- suivi d'un point-virgule
- suivi de n'importe quels caractères, ou de rien du tout
Donc, pour "999;18;82;5;;" ta regexp va matcher "999" sur la première parenthèse, et "18;82;5;;" sur la deuxième.
Si, en fait, ce que tu veux vérifier et capturer, c'est le dernier champ parmi les 5 champs terminés par un point-virgule (cela semble être le cas d'après ta réponse à ton propre message, mais ce n'est pas clair dans ce que tu dis dans ton message d'origine), je pense que ta regexp est fausse.
Une regexp adéquate pourrait être la suivante, avec prise en compte du cas où ce champ est vide :
Dal