2010-06-10 6 views
0

Finalement, ce que je veux faire est de démarrer un processus dans un module et d'analyser la sortie en temps réel dans un autre script.Perl - Comment utiliser un processus Handle créé dans un module dans un autre script Perl

Ce que je veux faire:

  • Ouvrir un processus gestionnaire (IPC)
  • Utilisez cet attribut en dehors du Module

Comment je suis en train de le faire et l'échec :

  • Ouvrir le gestionnaire de processus
  • Enregistrer le gestionnaire dans l'attribut d'un module
  • Utilisez l'attribut en dehors du module.

Exemple de code:

#module.pm 

$self->{PROCESS_HANDLER}; 

sub doSomething{ 
    ... 
    open($self->{PROCESS_HANDLER}, "run a .jar 2>&1 |"); 
    ... 
} 


#perlScript.pl 

my $module = new module(...); 
... 
$module->doSomething(); 
... 
while($module->{PROCESS_HANDLER}){ 
    ... 
} 
+0

Que signifie 'auto -> {}' PROCESS_HANDLER moyenne (sans le '' $)? – mob

+0

Mon erreur, je l'ai mis à jour. – Zwik

Répondre

2

Votre déclaration while manque un readline iterator, pour une chose:

while(< {$module->{PROCESS_HANDLER}} >) { ... 

ou

while(readline($module->{PROCESS_HANDLER})) { ... 
+0

< {$module-> {PROCESS_HANDLER}}> n'a pas fonctionné, mais readline ($ module -> {PROCESS_HANDLER}) l'a fait. Merci beaucoup. – Zwik

+0

mon $ handle = $ module -> {PROCESS_HANDLER}; tandis que (<$handle>) ... fonctionnerait. – runrig

3

package Thing; 
use Moose; 
use IO::Pipe; 

has 'foo' => (
    is  => 'ro', 
    isa  => 'IO::Handle', 
    default => sub { 
     my $handle = IO::Pipe->new; 
     $handle->reader('run a .jar 2>&1'); # note, *no* pipe character here 
     return $handle; 
    }); 

1; 

package main; 
use Thing; 
my $t = Thing->new; 
say $t->foo->getlines; 
+0

Qu'est-ce que getlines retournerait exactement? Je veux dire, reviendrait-il la sortie depuis la dernière fois que j'ai appelé la méthode? – Zwik

+0

[Oui] (http://p3rl.org/IO::Handle#%24io-%3Egetlines). – daxim

+0

Merci pour votre réponse, mais comme je n'utilise pas Moose, ce n'était pas exactement ce que je cherchais. – Zwik

Questions connexes