IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

mise en forme


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut mise en forme
    Bonjour,

    J'ai un script principal qui utilise une base de données stockée dans un hash de hash. Généralement, je place mes hash en début de code mais dans ce cas-ci, mon hash fait plus de 5000 lignes et mon programme en lui même, à peine 1000. Je me demande donc comment faire par soucis de lisibilité. Puis-je stocker ma base de données dans un programme à part que mon programme principal interrogerait? Comment feriez-vous à ma place?


    Merci beaucoup,

    Jasmine,

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Qu'entends-tu par base de données stockée dans un hash de hash ?

  3. #3
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Merci de me répondre :

    des données de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    my %mix_db = (
     
     
    	'M. gastri Mutation A + M. malmoense' => {
    				'name_1' => 'M. gastri Mutation A',
    				'name_2' => 'M. malmoense',
    				'seq_1' => 'TTACCCAGCGGGCAATTTGCGG',
    				'seq_2' => 'CTCTCGGCTGGTGCAAG',
    				'0'	=> [1, 1],
    				'1'	=> [1, 1],
    				'2'	=> [1, 1],
    				'3'	=> [0, 0],
    				'4'	=> [1, 1],
    				'5'	=> [2, 2],
    				'6'	=> [1, 0],
    				'7'	=> [2, 0],
    				'8'	=> [0, 0],
    				'9'	=> [0, 0],
    				'10'	=> [0, 2],
    				'11'	=> [1, 0],
    				'12'	=> [2, 1],
    				'13'	=> [0, 0],
    				'14'	=> [3, 2],
    				'15'	=> [0, 0],
    				'16'	=> [1, 0],
    				'17'	=> [0, 1],
    				'18'	=> [0, 3],
    				'19'	=> [2, 0],
    				'20'	=> [0, 1],
    				'21'	=> [1, 0],
    				'22'	=> [0, 2],
    				'23'	=> [1, 0],
    				'24'	=> [0, 0],
    				'25'	=> [2, 1],
    				'mean_1' => [6, 11, 16, 21, 23],
    				'mean_2' => [17, 20],
    			},
    	'M. gastri Mutation A + M. gordonae Mutation GCG' => {
    				'name_1' => 'M. gastri Mutation A',
    				'name_2' => 'M. gordonae Mutation GCG',
    				'seq_1' => 'TCCTACCTGCCGGGTAAGG',
    				'seq_2' => 'TGCTACTGGGCCCGCAGTCCGG',
    				'0'	=> [1, 1],
    				'1'	=> [1, 1],
    				'2'	=> [1, 1],
    				'3'	=> [0, 0],
    				'4'	=> [1, 1],
    				'5'	=> [2, 1],
    				'6'	=> [1, 4],
    				'7'	=> [2, 0],
    				'8'	=> [0, 0],
    				'9'	=> [0, 0],
    				'10'	=> [0, 2],
    				'11'	=> [1, 0],
    				'12'	=> [2, 2],
    				'13'	=> [0, 0],
    				'14'	=> [3, 1],
    				'15'	=> [0, 0],
    				'16'	=> [1, 1],
    				'17'	=> [0, 0],
    				'18'	=> [0, 0],
    				'19'	=> [2, 1],
    				'20'	=> [0, 0],
    				'21'	=> [1, 1],
    				'22'	=> [0, 0],
    				'23'	=> [1, 2],
    				'24'	=> [0, 0],
    				'25'	=> [2, 2],
    				'mean_1' => [11],
    				'mean_2' => [],
    			},

  4. #4
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut
    Euh, tu as une raison spécifique de ne pas mettre ça dans un fichier structuré ?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Par défaut
    Googlize Storable. Ca devrait te donner une solution pour plutôt mettre tes données dans un fichier data séparé. A mon sens, elles n'ont rien à faire dans le corps de ton programme.
    On peut aussi utiliser Data:umper. Ca marche très bien.

  6. #6
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Merci pour vos réponses

    Citation Envoyé par Schmorgluck Voir le message
    Euh, tu as une raison spécifique de ne pas mettre ça dans un fichier structuré ?
    La seule raison est esthétique, afin de de pas avoir mes 5000 premières lignes de code contenant ma base de données.


    Data::Dumper - stringified perl data structures, suitable for both printing and eval
    ... pour afficher ou évaluer ... ce module ne semble pas permettre de stocker


    Qu'est-ce que Googlize Storable?

  7. #7
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut
    Ben après, pour stocker, on utilise un fichier extérieur, justement. C'est ce que je voulais dire dans mon post précédent. Désolé si je n'ai pas été clair.

  8. #8
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Vu que je ne m'en sortais pas avec la sérialisation et Data::Dumper voici ce que j'ai utilisé et qui fonctionne :

    Hash_mix_DB.pm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    #!/usr/local/bin/perl
     
     
    package Hash_mix_DB;
     
     
    #------------- Hash_mix_DB.pm
     
    use strict;
    use warnings;
     
    use base 'Exporter';
     
    our @EXPORT = qw($mix_db_ref);
     
     
     
    my %mix_db = (
     
    	'M. gastri Mutation A + M. malmoense' => {
    				'name_1' => 'M. gastri Mutation A',
    				'name_2' => 'M. malmoense',
    				'seq_1' => 'TTACCCAGCGGGCAATTTGCGG',
    				'seq_2' => 'CTCTCGGCTGGTGCAAG',
    				'0'	=> [1, 1],
    				'1'	=> [1, 1],
    				'2'	=> [1, 1],
    				'3'	=> [0, 0],
    				'4'	=> [1, 1],
    				'5'	=> [2, 2],
    				'6'	=> [1, 0],
    				'7'	=> [2, 0],
    				'8'	=> [0, 0],
    				'9'	=> [0, 0],
    				'10'	=> [0, 2],
    				'11'	=> [1, 0],
    				'12'	=> [2, 1],
    				'13'	=> [0, 0],
    				'14'	=> [3, 2],
    				'15'	=> [0, 0],
    				'16'	=> [1, 0],
    				'17'	=> [0, 1],
    				'18'	=> [0, 3],
    				'19'	=> [2, 0],
    				'20'	=> [0, 1],
    				'21'	=> [1, 0],
    				'22'	=> [0, 2],
    				'23'	=> [1, 0],
    				'24'	=> [0, 0],
    				'25'	=> [2, 1],
    				'mean_1' => [6, 11, 16, 21, 23],
    				'mean_2' => [17, 20],
    			},
    	'M. gastri Mutation A + M. gordonae Mutation GCG' => {
    				'name_1' => 'M. gastri Mutation A',
    				'name_2' => 'M. gordonae Mutation GCG',
    				'seq_1' => 'TCCTACCTGCCGGGTAAGG',
    				'seq_2' => 'TGCTACTGGGCCCGCAGTCCGG',
    				'0'	=> [1, 1],
    				'1'	=> [1, 1],
    				'2'	=> [1, 1],
    				'3'	=> [0, 0],
    				'4'	=> [1, 1],
    				'5'	=> [2, 1],
    				'6'	=> [1, 4],
    				'7'	=> [2, 0],
    				'8'	=> [0, 0],
    				'9'	=> [0, 0],
    				'10'	=> [0, 2],
    				'11'	=> [1, 0],
    				'12'	=> [2, 2],
    				'13'	=> [0, 0],
    				'14'	=> [3, 1],
    				'15'	=> [0, 0],
    				'16'	=> [1, 1],
    				'17'	=> [0, 0],
    				'18'	=> [0, 0],
    				'19'	=> [2, 1],
    				'20'	=> [0, 0],
    				'21'	=> [1, 1],
    				'22'	=> [0, 0],
    				'23'	=> [1, 2],
    				'24'	=> [0, 0],
    				'25'	=> [2, 2],
    				'mean_1' => [11],
    				'mean_2' => [],
    			},
     
    );
     
     
    our $mix_db_ref = \%mix_db;
     
     
    1;



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #!/usr/bin/perl
     
     
    use strict; 
    use warnings;
     
     
     
    use Hash_mix_DB;
     
     
     
    my %mix_db = %{$mix_db_ref};
     
     
     
    foreach my $key (keys %mix_db ){
    	print $mix_db{$key}{'name_1'}."\t".@{$mix_db{$key}{'mean_1'}}."\t".$mix_db{$key}{'name_2'}."\t".@{$mix_db{$key}{'mean_2'}}."\n";
    }
     
     
    print "nombre de clés : ".int((keys %mix_db))."\n";

    Avez-vous des remarques, des critiques ou des conseils?


    Merci à vous

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Par défaut
    Je n'étais pas très sûr de l'usage des modules que j'avais indiqué, donc j'ai essayé de l'implanter. Ce que j'ai essayé est finalement très similaire à ce que tu as fait. D'un coté, un fichier qui écrit les données, et de l'autre, un fichier dans le quel l'objet est instancié à partir d'un fichier.

    Voici le fichier qui écrit les données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    use 5.10.0;
    use strict;
    use Storable qw(store retrieve);
     
    my $mix_db = {
    	'M. gastri Mutation A + M. malmoense' => {
    				'name_1' => 'M. gastri Mutation A',
    				'name_2' => 'M. malmoense',
    				'seq_1' => 'TTACCCAGCGGGCAATTTGCGG',
    				'seq_2' => 'CTCTCGGCTGGTGCAAG',
    				'0'	=> [1, 1],
    				'1'	=> [1, 1],
    				'2'	=> [1, 1],
    				'3'	=> [0, 0],
    				'4'	=> [1, 1],
    				'5'	=> [2, 2],
    				'6'	=> [1, 0],
    				'7'	=> [2, 0],
    				'8'	=> [0, 0],
    				'9'	=> [0, 0],
    				'10'	=> [0, 2],
    				'11'	=> [1, 0],
    				'12'	=> [2, 1],
    				'13'	=> [0, 0],
    				'14'	=> [3, 2],
    				'15'	=> [0, 0],
    				'16'	=> [1, 0],
    				'17'	=> [0, 1],
    				'18'	=> [0, 3],
    				'19'	=> [2, 0],
    				'20'	=> [0, 1],
    				'21'	=> [1, 0],
    				'22'	=> [0, 2],
    				'23'	=> [1, 0],
    				'24'	=> [0, 0],
    				'25'	=> [2, 1],
    				'mean_1' => [6, 11, 16, 21, 23],
    				'mean_2' => [17, 20],
    			},
    	'M. gastri Mutation A + M. gordonae Mutation GCG' => {
    				'name_1' => 'M. gastri Mutation A',
    				'name_2' => 'M. gordonae Mutation GCG',
    				'seq_1' => 'TCCTACCTGCCGGGTAAGG',
    				'seq_2' => 'TGCTACTGGGCCCGCAGTCCGG',
    				'0'	=> [1, 1],
    				'1'	=> [1, 1],
    				'2'	=> [1, 1],
    				'3'	=> [0, 0],
    				'4'	=> [1, 1],
    				'5'	=> [2, 1],
    				'6'	=> [1, 4],
    				'7'	=> [2, 0],
    				'8'	=> [0, 0],
    				'9'	=> [0, 0],
    				'10'	=> [0, 2],
    				'11'	=> [1, 0],
    				'12'	=> [2, 2],
    				'13'	=> [0, 0],
    				'14'	=> [3, 1],
    				'15'	=> [0, 0],
    				'16'	=> [1, 1],
    				'17'	=> [0, 0],
    				'18'	=> [0, 0],
    				'19'	=> [2, 1],
    				'20'	=> [0, 0],
    				'21'	=> [1, 1],
    				'22'	=> [0, 0],
    				'23'	=> [1, 2],
    				'24'	=> [0, 0],
    				'25'	=> [2, 2],
    				'mean_1' => [11],
    				'mean_2' => [],
    			} 
    };
     
    store($mix_db,"mesdata.dat");
    Et voici celui qui charge l'objet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    {
    	package TestClass;
    	use strict;
    	use Storable qw(store retrieve);
     
    	sub new() {
    		my $classe   = shift;
    		my $filename = shift;
    		my $self     = retrieve($filename);
    		bless( $self, $classe );
    		return $self;
    	}
    }
     
    use 5.10.0;
    use strict;
    use Data::Dumper;
    my $mix = TestClass->new("mesdata.dat");
    print Dumper($mix);
    Je précise que Storable a une particularité : les fichiers sont des fichiers binaires. Il y a des avantages, mais il y a aussi des incovénients. On ne peut pas les modifiers directement. En utilisant Data:umper, on pourrait assez facilement écrire directement les fichiers de données sans pratiquement avoir à utiliser le "programme" d'écriture des données.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR] mise en forme d'un champs texte en fonction des données
    Par niPrM dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 29/06/2004, 11h57
  2. [CR 9] Mise en forme non affichée when null
    Par Yorglaa dans le forum Formules
    Réponses: 2
    Dernier message: 28/06/2004, 17h27
  3. mise en forme rapide d'applets
    Par appletj dans le forum Applets
    Réponses: 11
    Dernier message: 03/06/2004, 13h28
  4. Mise en forme HTML
    Par Regis.C dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 25/04/2004, 11h55
  5. Mise en forme fichier avant Import
    Par jeff37 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/04/2004, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo