[Perl] Traitement sur un array à partir de la référence de celui-ci

Traitement sur un array à partir de la référence de celui-ci [Perl] - Perl - Programmation

Marsh Posté le 11-03-2004 à 18:23:21    

Je tente d'accéder à un array dont j'ai placé la référence dans un hash. Je suis capable de récupérer un élément bien précis, mais incapable d'effectuer un traitement sur l'array lui même (un grep en l'occurence.
 
Merci
 

Code :
  1. sub httpd::conf {
  2.   my $self = { file  => undef,
  3.                lines => undef,
  4.                @_
  5.   };
  6.   my @lines; 
  7.   open (FENT, $self->{"file"});
  8.   while (<FENT> ) {
  9.     $_ =~ s/\n//g;
  10.     if ((grep ! /^#/, $_) && (grep ! /^$/, $_)) {
  11.       push (@lines, $_);
  12.     }
  13.   }
  14.   close FENT;
  15.   $self->{"lines"} = \@lines;
  16.   bless($self, "httpd::conf" );
  17. }
  18. sub httpd::conf::as_SSLEngine {
  19.   my $self = shift;
  20.   my @SSLEngine_line = grep /^SSLEngine /, $self->{"lines"};
  21.   if (@SSLEngine_line) {
  22.     return 1;
  23.   }
  24. }

Reply

Marsh Posté le 11-03-2004 à 18:23:21   

Reply

Marsh Posté le 11-03-2004 à 18:37:16    

la solution semble être ceci:
 
@{$self->{"lines"}}

Reply

Marsh Posté le 12-03-2004 à 12:20:10    

Burgergold a écrit :

la solution semble être ceci:
 
@{$self->{"lines"}}

A priori oui, tu es dans un contexte de liste
 
Dans ta 1ère fonction, tu fais ceci :

Code :
  1. $self->{"lines"} = \@lines;


 
Ca doit pouvoir revenir à la même chose qu'en faisant ceci :

Code :
  1. @{$self->{"lines"}} = @lines;


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 14-03-2004 à 01:38:43    

C'est pas vraiment un question de contexte : $self->{"lines"} est une référence à un array et le @{} permet de le « dereférencer », point.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed