> That output indicates ErrorEvent has been triggered twice.  The first
> time when the child process closes STDERR, and the second time when it
> closes STDOUT.  I added some extra output to the sample code:

Based upon your earlier comments, this is as I had expected.  What does
concern me however is that the dying of the executed program, which an
associated error return value, is not triggering an error event.

    my $task = POE::Wheel::Run->new(
        'Program'       =>  'perl -e "die"',
        'CloseEvent'    =>  'close',
        'ErrorEvent'    =>  'error',
        'StderrEvent'   =>  'output',
        'StdoutEvent'   =>  'output',
        'StderrFilter'  =>  POE::Filter::Stream->new,
        'StdoutFilter'  =>  POE::Filter::Stream->new
    );

This I would expect should trigger an error event - Or are my expectations
incorrect here?  Alternatively, what would be another way to obtain the
return value for a program executed through POE::Wheel::Run?

Regards,
Rob


Rob Casey
Implementation Analyst
Essential and Direct Mail Development
Hermes Precisa Australia (Victoria)
Phone : (03) 9217-5501
Email : [EMAIL PROTECTED]
 

-----Original Message-----
From: Rocco Caputo [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 12, 2003 12:10 AM
To: [EMAIL PROTECTED]
Subject: Re: POE::Wheel::Run ErrorEvent


On Tue, Feb 11, 2003 at 02:05:55PM +1100, [EMAIL PROTECTED] wrote:
> > 2. I am surprised that ErrorEvent is not triggered in that case.  Are
> > you using POE 0.25?  If there is a problem in Wheel::Run, it would
> > help greatly if you could submit a test case that reproduces it.
> 
> I was running 0.24 on my system - I have updated this to 0.2501 from CVS
and
> the error persists.
> 
> robin:/users/rc6286/workspace/dev/perl/pas > perl test.perl
> Output: Died at -e line 1.
> $VAR1 = 'read';
> $VAR2 = '0';
> $VAR3 = '';
> $VAR4 = 2;
> $VAR5 = 'STDERR';
> $VAR1 = 'read';
> $VAR2 = '0';
> $VAR3 = '';
> $VAR4 = 2;
> $VAR5 = 'STDOUT';

That output indicates ErrorEvent has been triggered twice.  The first
time when the child process closes STDERR, and the second time when it
closes STDOUT.  I added some extra output to the sample code:

[...]

        'close'  =>  sub { delete $_[ HEAP ]->{'_task'}; print "closed\n";
},
        'error'  =>  sub { print "error:\n",Dumper( @_[ ARG0 .. ARG4 ] ) },

Here's the new output, first using perl 5.005_03, and then using 5.6.1.

  2) eyrie:~/public_html/tmp% perl5.00503 robt-casey-errorevent.perl
  Output: Died at -e line 1.
  error:
  $VAR1 = 'read';
  $VAR2 = '0';
  $VAR3 = '';
  $VAR4 = 2;
  $VAR5 = 'STDOUT';
  error:
  $VAR1 = 'read';
  $VAR2 = '0';
  $VAR3 = '';
  $VAR4 = 2;
  $VAR5 = 'STDERR';
  closed

  2) eyrie:~/public_html/tmp% perl robt-casey-errorevent.perl
  Output: Died at -e line 1.
  error:
  $VAR1 = 'read';
  $VAR2 = '0';
  $VAR3 = '';
  $VAR4 = 2;
  $VAR5 = 'STDERR';
  error:
  $VAR1 = 'read';
  $VAR2 = '0';
  $VAR3 = '';
  $VAR4 = 2;
  $VAR5 = 'STDOUT';
  closed

-- Rocco Caputo - [EMAIL PROTECTED] - http://poe.perl.org/



**********************************************************************
IMPORTANT
The contents of this e-mail and its attachments are confidential and intended
solely for the use of the individual or entity to whom they are
addressed.  If you received this e-mail in error, please notify
the HPA Postmaster, [EMAIL PROTECTED], then delete 
the e-mail.

This footnote also confirms that this e-mail message has been swept for
the presence of computer viruses by MimeSweeper.  Before opening or
using any attachments, check them for viruses and defects.

Our liability is limited to resupplying any affected attachments.

HPA collects personal information to provide and market our services.
For more information about use, disclosure and access see our Privacy
Policy at www.hpa.com.au
**********************************************************************

Reply via email to