/[cvs]/joko/TestArea/perl/runtime/POE/jobs-tasks/run2.pl
ViewVC logotype

Annotation of /joko/TestArea/perl/runtime/POE/jobs-tasks/run2.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Sun May 11 21:48:52 2003 UTC (21 years, 4 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
initial commit

1 joko 1.1 #!/usr/bin/perl
2    
3     use warnings;
4     use strict;
5    
6     use POE qw( Wheel::Run Filter::Line );
7    
8     # Start the session. Spawn a simple program, and describe the events
9     # it will generate as it does things.
10    
11     sub _start {
12     my ( $kernel, $heap ) = @_[ KERNEL, HEAP ];
13    
14     $heap->{child} = POE::Wheel::Run->new
15     #( Program => [ "/bin/ls", "-1", "/" ], # Program to run.
16     ( Program => [ "dir", "-1", "/" ], # Program to run.
17     #( Program => [ "bin/ls.exe", "-1", "/" ], # Program to run.
18     Filter => POE::Filter::Line->new(), # Child speaks in lines.
19     StdoutEvent => "got_child_stdout", # Child wrote to STDOUT.
20     StderrEvent => "got_child_stderr", # Child wrote to STDERR.
21     #CloseEvent => "got_child_close", # Child stopped writing.
22     );
23     }
24    
25     # Deal with information the child wrote to its STDOUT.
26    
27     sub got_child_stdout {
28     my $stdout = $_[ARG0];
29     print "STDOUT: $stdout\n";
30     }
31    
32     # Deal with information the child wrote to its STDERR. These are
33     # warnings and possibly error messages.
34    
35     sub got_child_stderr {
36     my $stderr = $_[ARG0];
37     $stderr =~ tr[ -~][]cd;
38     print "STDERR: $stderr\n";
39     }
40    
41     # The child has closed its output filehandles. It will not be sending
42     # us any more information, so destroy it.
43    
44     sub got_child_close {
45     my $heap = $_[HEAP];
46     print "child closed.\n";
47     delete $heap->{child};
48     }
49    
50     # A list of functions that will handle the events they're named after.
51    
52     my @handlers =
53     qw( _start got_child_stdout got_child_stderr got_child_close
54     );
55    
56     # Start a session where each event is handled by a function with the
57     # same name. Run POE's Kernel (and thus all its sessions) until done.
58    
59     POE::Session->create( package_states => [ main => \@handlers ] );
60     $poe_kernel->run();
61    

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed