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
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);
}
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
 
#!/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.