Bonjour
Je n'arrive pas a trouver la syntaxe permettant de rechercher une clé dans un hash qui est stocké dans une variable.
Dans le premier cas pas de problème la valeur retourne bien "yes"
dans ce cas je n'arrive pas a trouver la syntaxe que doit prendre le %$HashHost
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 my $myhost = 'hostname1'; my %Host = ( 'hostname1' => 12, 'hostname2' => 13, 'hostname3' => 14, 'hostname4' => 15 ); if (grep { /$myhost/ } keys %Host) { print 'yes'; }else{ print 'no'; }
Merci d'avance pour celui qui maitrise mieux que moi les hashes.
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 $myhost = 'hostname1'; my %Host = ( 'hostname1' => 12, 'hostname2' => 13, 'hostname3' => 14, 'hostname4' => 15 ); my $HashHost = \%Host; if (grep { /$myhost/ } keys %$HashHost) { print 'yes'; }else{ print 'no'; }
L'écriture ci-dessous est plus logique pour l'utilisation d'un variable = hash.
Tout fonctionne bien dans ce test mais dans mon code je pense que je dois avoir une valeur de clé a vide, du coup j'ai rajouté
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
67
68
69
70
71
72
73
74 my $myhost = 'CNF011643'; my ($HashHost, $table2, $total) = myfunction(); if (grep { /$myhost/ } keys %$HashHost) { print 'yes ID:'.$HashHost->{$myhost}->{'id_host'}; }else{ print 'no'; } sub myfunction { my %Host = ( 'FRLT00953454' => { 'id_host' => '2574', 'id_pays' => '17', 'id_zone' => '5' }, 'DE-LTFBPC0VV3RQ' => { 'id_host' => '38948', 'id_pays' => '15', 'id_zone' => '4' }, 'CNF011643' => { 'id_host' => '42098', 'id_pays' => '7', 'id_zone' => '2' }, 'PLSSCM-YXH' => { 'id_host' => '26717', 'id_pays' => '7', 'id_zone' => '2' }, 'FRDT00953037' => { 'id_host' => '14538', 'id_pays' => '34', 'id_zone' => '5' }, 'CNF017212' => { 'id_host' => '47667', 'id_pays' => '7', 'id_zone' => '2' }, 'CNO050010' => { 'id_host' => '50528', 'id_pays' => '7', 'id_zone' => '2' }, 'TW8FEKX' => { 'id_host' => '37462', 'id_pays' => '29', 'id_zone' => '2' }, 'GUE_584' => { 'id_host' => '13692', 'id_pays' => '22', 'id_zone' => '2' } ); my %table1 = ( 'hostname1' => 12, 'hostname2' => 13, 'hostname3' => 14, 'hostname4' => 15 ); my $TTT = 5; return (\%Host, \%table1, $TTT ); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (length($myhost) > 0 && grep { /$myhost/ } keys %$HashHost)
Partager