[Débutant] Comment parser un fichier ?

Fermé
BravoFoxtrot Messages postés 1 Date d'inscription mardi 30 août 2016 Statut Membre Dernière intervention 30 août 2016 - Modifié par BravoFoxtrot le 30/08/2016 à 16:37
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 20 sept. 2016 à 10:45
Bonjour,

Je dois parser un fichier de configuration, récupérer les données séparées par " : " en ignorant les lignes commentées, les mettre en deux colonnes dans un fichier et envoyer ensuite le tout dans une base MySQL. Je débute complètement en Perl.

Voici où j'en suis :

#!/usr/bin/perl
# use strict;
use warnings;
use DBI;

my $KEY='';
my $VALUE='';

# Récupération des données
open (FILE, "</etc/mongod.conf") or die "Fichier introuvable! : $!\n";
my @rawData = <FILE>;

# Impression dans un fichier
open (FILE2, ">/home/sierra/Documents/mongoConfData.txt")
			or die "Impossible de créer le fichier mongoConfigData.txt\n";
while (<FILE>) {
	$line =$_;
	chomp ($line);
	($KEY, $VALUE) = split(/\:/,$line);
# Ignorer lignes commentées
	unless ($_ = ~/^#/) {
		print FILE2 ("$KEY, $VALUE\n");
}
}
# Connexion à la base de données
my $db = DBI -> connect (("dbi:mysql:dbname=mongodconf;
	host = localhost;","root","sqladminclear
	"))
		or die "connexion mysql impossible !";
# Insertion dans la base de données
$db->do("insert into data values ('$KEY', '$VALUE')")
		or die "query error\n";

close(FILE, FILE2);


Je ne sais même pas si c'est correct, et il manque la commande selon laquelle il doit ignorer toutes les lignes commentées. Je ne sais pas comment faire. Une petite aide svp ? :-)
A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
20 sept. 2016 à 10:45
Salut,

Désolé de la réponse tardive.

Je n'ai pas regardé le reste du code, mais il y a un espace en trop dans la ligne 22, qui devrait s'écrire :

unless ($_ =~ /^#/) {

Par ailleurs, il serait plus logique de faire ce test avant le split, puisque tu dois ignorer ces lignes.


Dal
0