[Perl] POO et utilisation d'une method dans un print ou un shell exec

POO et utilisation d'une method dans un print ou un shell exec [Perl] - Perl - Programmation

Marsh Posté le 13-04-2004 à 14:26:10    

bon la semaine dernière j'étais venu pour un problème similaire.
 
J'ai une classe, qui a des méthodes
 

Code :
  1. #!/dfs/system/prod/aix/rs_aix433/bin/perl/current/bin/perl
  2. use strict;
  3. use lib "/dfs/projects/sdcbrm/projects/aparcheck/dev/";
  4. use aparcheck::apar;
  5. my $apar = new aparcheck::apar( "oslevel"       => "4.3.3",
  6.                                 "number"        => "IY49899",
  7.                                 "date_204"      => "",
  8.                                 "date_internet" => "",
  9.                                 "severity"      => "",
  10. );
  11. #my @result_all = `instfix -d /dfs/system/prod/aix/rs_aix433/apar -p -k $apar->number 2>&1`;
  12. print $apar->number . "\n";
  13. print "$apar->number" . "\n";


 
Le résultat est le suivant:
 

yaberge2@info1 ==> test.pl
IY49899
aparcheck::apar=HASH(0x2003b480)->number


 
mais voila, quand j'exécute mon instfix, je veux qu'il utilise ma méthode, mais celui-ci utilise aparcheck::apar=HASH(0x2003b480)->number et non sa valeur, comme ceci
 

instfix -d /dfs/system/prod/aix/rs_aix433/apar -p -k aparcheck::apar=HASH(0x2003b480)->number 2>&1


 
je cherche comment utiliser ma méthode directement mais la doc sur la POO se fait rare...
 

Reply

Marsh Posté le 13-04-2004 à 14:26:10   

Reply

Marsh Posté le 13-04-2004 à 14:57:33    

Tu lance le truc avec un system() ?
Pourkoi tu fais pas ca:

Code :
  1. system("instfix -d /dfs/system/prod/aix/rs_aix433/apar -p -k ". $apar->number  ."2>&1" );

Reply

Marsh Posté le 13-04-2004 à 15:09:12    

pospos a écrit :

Tu lance le truc avec un system() ?
Pourkoi tu fais pas ca:

Code :
  1. system("instfix -d /dfs/system/prod/aix/rs_aix433/apar -p -k ". $apar->number  ."2>&1" );




 
je le lance pas avec system parce que j'ai besoin de récupérer le résultat

Reply

Marsh Posté le 13-04-2004 à 17:39:08    

tu le lance avec koi? un `` ?
 
dans ce cas tu peux faire:

Code :
  1. my $cmd = "instfix -d /dfs/system/prod/aix/rs_aix433/apar -p -k " . $apar->number  . "2>&1";
  2. my @out = `$cmd`;

Reply

Marsh Posté le 13-04-2004 à 18:13:24    

pospos a écrit :

tu le lance avec koi? un `` ?
 
dans ce cas tu peux faire:

Code :
  1. my $cmd = "instfix -d /dfs/system/prod/aix/rs_aix433/apar -p -k " . $apar->number  . "2>&1";
  2. my @out = `$cmd`;




 
c'est certain qu'ainsi ca fonctionne, mais ca me semble tjrs chiant de devoir faire ce genre de manipulation en 2 lignes lorsque ca devrait marcher avec une seule.
 
en attendant, j'utilise directement la référence de mon hash et non ma méthode
 
$apar->{number} au lieu de $apar->number
 
merci quand meme

Reply

Marsh Posté le 13-04-2004 à 21:27:48    

tu te prend la tete pour pas grand chose!
Le fait de pouvoir le faire en une ligne c'est bien seulement si c'est plus rapide à faire et/ou plus facile à lire et à maintenir.

Reply

Sujets relatifs:

Leave a Replay

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