Bonjour,
J’ai un ensemble de fichiers avec ce type de données :
1:3:
2:1599:
6:4:
17:3246:
112:5545:

Je souhaite traiter ces fichiers. Pour cela j’utilise donc ce code avec une fonction qui retourne le nom des fichiers et une autre qui les ouvre , renvoie leur contenue dans un hash et retourne ce hash au main.
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
 
#!/usr/bin/perl -w
use Carp; 
use strict;
 
my $repertoire = "/home/baptiste/Desktop/test/";
my @fichier = lister_fichiers($repertoire);
 
foreach my $fic (@fichier){
	#my $ref=fct($fic);
	my %ltemp=fct($fic);
	print "$fic \n";
	#my %ltemp = %$ref;
	foreach ((my $key,my $valeur)=each(%ltemp)){
		print "ltemp : code ".$key." valeur : ".$valeur."\n";
	}
}
 
 
sub fct (){
	my($fich) = @_;
	open FICHIER , "< ./test/$fich ";
	my %list;
 
	while (my $ligne = <FICHIER>){
		(my $num,my $nb)=split(/:/,$ligne);
		$list{$num}=$nb;
	}
	close FICHIER;
 
	while ((my $cle,my $val) = each(%list)){
		print "code : ".$cle." nombre d enregistrement : ".$val."\n";
	}
 
#my $ref_list = \%list;
#return ($ref_list);
return (%list);
}
 
sub lister_fichiers {
	my ($repertoire)= @_;
	my @fichiers = ();
 
	opendir (my $rep_fh, $repertoire) or die "impossible d ouvrir \n";
 
	my @file_rep = grep { !/^\.\.?$/ } readdir($rep_fh);  
	closedir ($rep_fh);
 
	foreach my $nom (@file_rep) {   
		if (-f "$repertoire/$nom") { 
			push (@fichiers, "$nom"); 
		}
	}
return @fichiers;
}
Cependant je n’arrive pas à récupérer le hash dans mon main.
Apres exection de ce script j’obtiens :
yyyyy.dcnt1.org
code : 112 nombre d enregistrement : 5545
code : 6 nombre d enregistrement : 4
code : 1 nombre d enregistrement : 3
code : 17 nombre d enregistrement : 3246
code : 2 nombre d enregistrement : 1599
ltemp : code 6 valeur : 4
ltemp : code 6 valeur : 4
xxxx.dcnt1.org
code : 112 nombre d enregistrement : 5547777777
code : 6 nombre d enregistrement : 4
code : 1 nombre d enregistrement : 3
code : 17 nombre d enregistrement : 2907
code : 2 nombre d enregistrement : 1433
ltemp : code 6 valeur : 4
ltemp : code 6 valeur : 4

J’ai aussi essayé de le passer par référence (comme mis en commentaire mais le résultat et le même). Auriez vous une solution à ce problème ou quelques conseils ?
merci à vous .