Bonjour,

j'ai un soucis en utilisant les références sur un HASH, j'essaie d'apporter des modification au HASH %HEA dans la fonction identify_hea

Je pensais avoir bien suivi la FAQ mais j'ai du râter une subtilité

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
 
#!/usr/bin/perl 
use strict; use warnings;
use Data::Dumper;
 
sub get_attr_hea {
	my ( $SYSTEM_NAME )= shift;
	my $i=0;
	my %val=();
	foreach (`$CMD{lshwres} -r hea -m $SYSTEM_NAME --rsubtype phys --level port`){
		chomp;
		foreach (split /,/) {
			my($key,$value)=split /\=/;
			$val{$key}{$i}=$value;
		}
		$i++;
	}
	return %val;
}
 
sub identify_hea {
	my ($ref) = @_;
	my %HEA = %$ref;
	foreach (`lsdev -Ccadapter -t ethernet -F "name,physloc"`) {
		chomp;
		my ($name,$physloc) = split /,/ ;
		foreach (sort keys %{$HEA{phys_port_loc}}) {
			%{$ref{adapter}{$_}}=$name if $physloc =~ /-$HEA{phys_port_loc}{$_}$/;
		}
	}
}
 
 
my %HEA = get_attr_hea($SYSTEM_NAME);
 
identify_hea(\%HEA);
C'est cette ligne qui retourne une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
%{$ref{adapter}{$_}}=$name if $physloc =~ /-$HEA{phys_port_loc}{$_}$/;
./reseau_vio.pl
Global symbol "%ref" requires explicit package name at ./reseau_vio.pl line 76.
Execution of ./reseau_vio.pl aborted due to compilation errors.
Je suis en Perl 5.8.8.

Merci !