IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Grep dans une variable d'un retour d'un hash


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 10
    Par défaut Grep dans une variable d'un retour d'un hash
    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"
    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';
    	}
    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
    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';
    	}
    Merci d'avance pour celui qui maitrise mieux que moi les hashes.

    L'écriture ci-dessous est plus logique pour l'utilisation d'un variable = hash.

    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 );
    	}
    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
    if (length($myhost) > 0 && grep { /$myhost/ } keys %$HashHost)

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    Les fonctions defined et exists servent à ce genre de tests

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Stockage commande grep dans une variable puis affichage
    Par Isabella83 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 23/04/2015, 11h13
  2. Résultat d'un GREP dans une variable
    Par IAzgardI dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 13/03/2014, 20h31
  3. Réponses: 2
    Dernier message: 05/05/2008, 17h25
  4. Réponses: 9
    Dernier message: 21/02/2007, 13h20
  5. Réponses: 5
    Dernier message: 08/08/2006, 00h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo