Bonjour a tous ,
J'ai un probleme de portage de code entre les versions de Perl cad 5.8.8 a 5.10.
Et comme je ne veux pas mourrir bete, au lieu de repasser a l'ancienne version j'aimerai savoir comment ca marche en perl 5.10.
Je pense que le probleme est uniquement celui de la version de perl parce que j'ai fait tourner ce script sur deux machines distinctes avec des versions de perl differentes.
Voici le module (je m'excuse d'avance c'est du pseudo objet oriente !)
dans le module
puis dans mon main script :
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 =head1 NAME: MyoBase::MyoBaseDB::EntityUtils - Object for Entity (Gene,Protein,Transcript) informations access =head1 DESCRIPTION =cut package MyoBase::MyoBaseDB::EntityUtils; use lib "/home/drula/perl_modules"; use strict; use vars qw/@ISA @EXPORT/;#better to use EXPORT cause do not want to redeclare everything require Exporter; use PerlUtils; use MyoBase::Root; use MyoBase::MyoBaseDB::SeqUtils; use Cwd; #get pathname of current working directory use Carp; #warn of errors (from perspective of caller) @ISA = qw/Exporter/; @EXPORT = qw/ get_mol_entity_type_id create_mol_entity_id create_mol_entity_type_rec get_gene_id create_gene_rec get_gene_id_by_gene_identifier get_gene_id_by_gene_identifier_basic get_all_ensembl_genes_by_species_name get_protein_id get_protein_data create_protein_rec get_protein_id_by_protein_identifier get_protein_identifier_by_gene_identifier create_transcript_rec get_transcript_id get_genomic_data create_transcript_rec /; =head2 get_all_ensembl_genes_by_species_name Title : get_all_ensembl_genes_by_species_name my \@ensembl_ids = get_all_ensembl_genes_by_species_name('connexion_to_compare','Danio rerio'); Function: get all ensembl identifiers associated to a species from database Returns : ref of a hash Args : $db, $species =cut sub get_all_ensembl_genes_by_species_name{ my ( $db, $species_name ) = @_; my $sql = "SELECT DISTINCT gene_identifier FROM gene_view WHERE species_name = '$species_name'"; return $db->get_list_of_values($sql); }
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 #!/usr/bin/perl -w $| = 1; use strict; use warnings; use lib '/home/drula/perl_modules_tmp'; use lib '/home/drula/perl_modules_tmp/MyoBase/MyoBaseDB'; use lib '/home/drula/perl_modules_tmp/Treefam'; use Treefam::DBConnection; use MyoBase::MyoBaseDB::SourceUtils; use MyoBase::MyoBaseDB::SpeciesUtils; use MyoBase::MyoBaseDB::EntityUtils; use MyoBase::MyoBaseDB::XrefSynoUtils; use DBConnection; use PerlUtils; use Getopt::Std; use vars qw/$opt_s $opt_d $opt_h $opt_v $opt_t/; { ######## ## MAIN ## ######## my $cli = parse_cli(); my $db = get_universal_myobase_db( $$cli{db}, $$cli{host_address} ); $db->warnings(0); my $tfdb = get_treefam_db( $$cli{treefam_db} ); die "impossible to connect to db.treefam.org\n", if ( !$tfdb ); my $log = get_log_file(); my $species = $$cli{species}; print $log "Connected to ", $$cli{db}, "\n"; print $log "species: ", $species, "\n"; my $treefam_version = $$cli{version}; my $species_id = get_species_id_by_name( $db, $species ); my $source_rel_id = get_source_release_id( $db, 'TreeFam', $treefam_version, $species_id,$log ); my $genes = get_all_ensembl_genes_by_species_name( $db, $species ); print $species, " has ", scalar(@$genes), " in MyoBase\n";
Merci beaucoup d'avance !
J'allais oublie le message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Undefined subroutine &main::get_all_ensembl_genes_by_species_name called at add_treefam_xref_in_db.plx line 44, <IN> line 211.
Partager