Rechercher : dans
Par :

[PERL] Problème avec Split et §

Dernière réponse le 25 oct 2007 à 18:09:01 khaz, le 25 oct 2007 à 16:59:50 
 Signaler ce message aux modérateurs

Bonjour,
j'ai un problème lors de l'utilisation de la fonction split.
Je récupere un fichier de sortie sql où mes colonnes sont séparées par des symboles §.
Mon script Perl doit analyser ces fichiers, pour séparer les colonnes j'effectue donc la commande suivante :

while ($Lig = <Fic>)
{
chomp $Lig;
($cli, $mod, $lig1, $lig2, $lig3) = split(/§/, $Lig);
$BO{$cli}{$mod} = "$lig1§$lig2§$lig3";
}

Or le problème que j'ai, c'est qu'en passant le script avec le débuggeur j'observe ceci :

Watchpoint 2: $cli changed:
old value: undef
' new value: '00028996§0002§Ligne1§Ligne2§Ligne3.

J'ai donc cette impression que mon split ne marche du tout. Est ce lié au caractère § ? A autre chose ?

Meilleures réponses pour « [PERL] Problème avec Split et § » dans :
Javascript - split() VoirLa fonction split() permet de scinder une chaîne de caractère et de retourner les résultats dans un tableau, grâce à une chaîne définie comme séparateur. Dans l'exemple ci-dessous, la fonction split() permet de découper la date selon le caractère...
Perl - Les fichiers VoirLa notion de filehandle On appelle filehandle (traduisez descripteur de fichier), dans un programme Perl, le nom permettant de manipuler une connexion d'entrée-sortie (les entrées-sorties standards vues précédemment sont connues par les filehandles...
Les variables avec Perl VoirConcept de variable avec Perl Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Perl peuvent être de trois...
Perl - Caractéristiques du langage VoirFichier source, et interprétation Le fichier source d'un programme écrit en Perl est un simple fichier texte dont l'extension est par convention .pl. Ce fichier source doit être un fichier texte non formatté, c'est-à-dire un fichier texte dans sa...

1

davlar_99, le 25 oct 2007 à 17:47:25

Bonjour,

Essaie avec un foreach. ton split est bien défini.

open(FH, "patapouf.txt")|| die ("Can't open error file: $!");
foreach $Lig (<FH>)
{
($cli, $mod, $lig1, $lig2, $lig3) = split(/§/, $Lig);
print " 1:$cli\n 2:$mod\n 3:$lig1\n 4:$lig2\n 5:$lig3\n";
}

Tk moi ca marche bien

Dave

Répondre à davlar_99

2

 lami20j, le 25 oct 2007 à 18:09:01

Salut,

Watchpoint 2: $cli changed:
old value: undef


d'après le message on peut remarqué que ton fichier n'a pas vraiment la structure que tu dis
donc au passage des lignes quand tu fait le split la variable $cli change de valeur
mets ton fichier sur cjoint.com pour voir

Tu peux faire une vérification en mettant dans la boucle

print "$. => $cli, $mod, $lig1, $lig2, $lig3";

Ainsi tu peux vérifier où est le problème

lami20j

Répondre à lami20j