Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
527 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Stocker les regexp dans des variables avec qr

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Stocker les regexp dans des variables avec qr

n°1826462
yellu
Posté le 13-12-2008 à 14:25:23  profilanswer
 

Bonjour,
 
J'ai un petit soucis lorsque je stock mes regexps dans des variables avec qr.
 
L'exemple ci dessous fonctionne.
 

Code :
  1. my $regexp_ip = qr/^[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}$/;
  2. ...
  3. my @ls = readdir(D);
  4.  
  5. foreach(@ls) {
  6.     next unless($_ =~ m/$regexp_ip/i);
  7.     push(@ips, $_);
  8. }


 
L'exemple objet suivant ne fonctionne pas :
 

Code :
  1. ###############################################
  2. #Classe TOTO
  3. package TOTO;
  4. use strict;
  5. use warnings;
  6. sub new {
  7.   my ($class, $path) = @_;
  8.   my $this = {};
  9.   $this->{'regexp_ip'} = qr/^[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}$/;
  10.   bless($this, $class);
  11.   return $this;
  12. }
  13. sub get {
  14.   my ($this, $key) = @_;
  15.   return defined($this->{$key}) ? $this->{$key} : '';
  16. }
  17. ###############################################
  18. #Classe TITI
  19. package TITI;
  20. use strict;
  21. use warnings;
  22. use TOTO;
  23. sub new {
  24.   my ($class, $toto) = @_;
  25.   my $this = {};
  26.   $this->{'toto'} = $toto; # Ceci est un objet TOTO
  27.   bless($this, $class);
  28.   return $this;
  29. }
  30. sub test_ip {
  31.   ...
  32.  
  33.   my @ls = readdir(D);
  34.  
  35.   foreach(@ls) {
  36.     next unless($_ =~ m/$this->{'toto'}->get('regexp_ip')/i);
  37.     push(@ips, $_);
  38.   }
  39.  
  40.   ...
  41. }


 
Dans ce second exemple j'utilise un objet TOTO qui contient des informations communes à toutes l'application dont des regexp et cet objet est communiqué à tous les autres.
C'est pourquoi je souhaite utiliser sa regexp via $this->{'toto'}->get('regexp_ip'}.
 
Je pense qu'il doit falloir protéger l'appel car c'est un référence ou encore le protéger dans la structure m//, mais je ne vois pas comment faire.
 
Ne vous formalisez pas si il y a des fautes de synthaxe (ormis au niveau de l'appel de la regexp), car j'ai allégé le code pour mon post et tout le reste fonctionne bien sinon.
 
Merci d'avance pour votre aide,
 
Yellu

mood
Publicité
Posté le 13-12-2008 à 14:25:23  profilanswer
 

n°1826794
gilou
Modérateur
Modzilla
Posté le 14-12-2008 à 14:05:59  profilanswer
 

Fais un dump pour voir exactement comment sont tes structures.
http://search.cpan.org/~jhi/perl-5 [...] /Dumper.pm
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Stocker les regexp dans des variables avec qr

 

Sujets relatifs
Comment stocker le contenu d'un preg_match_all dans une variablesyntaxe pour passage variables Java -> Flash
Question sur la concaténation de variablesrecalculer valeur ou calculer et stocker dans variable?
Créer un graphique avec des données sources variablesvariables à base d'un fichier en input
[ Resolu ] Faille de sécuirté, comment gérer les variables ?Stocker un espace dans chaine de caractère
Affichage de variablesvariables d'environnement du shell à PHP
Plus de sujets relatifs à : Stocker les regexp dans des variables avec qr


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR