Bonjour,
Je debute en Perl et j'ai lu le post qui explique comment trier un tableau de hash...
Mais je reste bloquee.
Voici mon code qui remplie une table de hash :
Voici le code qui appel storeDataToAnalyse et qui derait lire la table retourner et l'ajouter a un tableau :
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 sub storeDataToAnalyse { $link = $_[0]; open(CROCOMAIL, MAIL_TMP_FILE) || die ("Erreur d'ouverture de CROCOMAIL") ; print "Data to nanlyse for $link:\n"; %datalines = (); while (my $line = readline(CROCOMAIL)) { if ($line =~ "Link Percentage") { last; } } while (my $line = <CROCOMAIL>) { if ($line =~ $link) { $line = (<CROCOMAIL>); for ($i = 0, $j = 0; $line = <CROCOMAIL>; $i++) { if ($line =~ /^\s*$/) { last; } if ($i > 1) { ($mb, $ips, $ipd) = split (/;/, $line); $datalines{$j}{ 'Mbyte' } = $mb; $datalines{$j}{ 'IPSource' } = $ips; $datalines{$j}{ 'IPDest'} = $ipd; $j++; } } last; } } close(CROCOMAIL); chomp (%datalines); print "return:".\$datalines."\n"; return \%datalines; }
voila mes trois problemes :
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 my $data2 = (); my $size = @$link_analyse; my @finaldata = (); for (my $k=0; $k < $size; $k++) { $data2 = storeDataToAnalyse("$link_analyse->[$k][0]"); $finaldata[$k] = $data2; $pp = $finaldata[$k]; chomp (%datalines); my $sz = keys(%datalines); for (my $kk = 0; $kk < $sz ; $kk++) { print "Mbyte:$datalines{$kk}{'Mbyte'} IPSource:$datalines{$kk}{'IPSource'} IPDest:$datalines{$kk}{'IPDest'}"; print "pp11 = $pp{$kk}{'Mbyte'}\n" } print "!!!!!!!!!!!!!!finaldata :".$pp."\n"; my $sizetot = @finaldata; print "sissetot=$sizetot\n"; }
1/ si je limite la portee de %dataline avec "my" dans storeDataToAnalyse et que j'utilise data2, je n'arrive pas a faire le print.
Je pense clairement que quelque chose m'echappe avec les references...
2/ print "!!!!!!!!!!!!!!finaldata :".$pp."\n"; affiche "!!!!!!!!!!!!!!finaldata :HASH(0x1860ae4)
alors que
print "return:".\$datalines."\n"; affiche "return SCALAR(0x183c8f4)"
3/print de $finaldata[$k] et de $pp{$kk}{'Mbyte'} n'affiche rien...
Malgres mes lectures de tuto, il y a clairement quelque chose que je n'ai pas compris dans les bases...
J'espere avoir etait clair dans l'explication de mon probleme :/
Merci d'avance pour votre aide!
Partager