Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
If the function _run is call in a eval block then it produces every 10use strict; use warnings; use IPC::Open3; &run; sub run { while ( 1 ) { eval { &_run }; print $@ if $@; sleep 10; } } sub _run { my ($wtr, $rdr, $err); my (@output, $pid); eval { $pid = IPC::Open3::open3($wtr, $rdr, $err, 'blubb'); while (my $line = <$rdr>) { chomp($line); push @output, "out: $line"; } close($wtr) if $wtr; close($rdr) if $rdr; close($err) if $err; waitpid $pid, 0; }; print "$_\n" for @output; }
Why does eval makes it so strange?use strict; use warnings; use IPC::Cmd; &run; sub run { while ( 1 ) { eval { &_run_cmd }; print $@ if $@; sleep 10; } } sub _run_cmd { my( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = IPC::Cmd::run( command => 'blubb', verbose => 0 ); print $success, "\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Problems with IPC::Open3
by almut (Canon) on Nov 01, 2008 at 20:49 UTC | |
by Anonymous Monk on Nov 01, 2008 at 21:38 UTC | |
by almut (Canon) on Nov 01, 2008 at 22:08 UTC | |
by Anonymous Monk on Nov 02, 2008 at 12:33 UTC | |
by Anonymous Monk on Nov 02, 2008 at 13:02 UTC | |
by Anonymous Monk on Nov 02, 2008 at 15:42 UTC | |
by Corion (Patriarch) on Nov 02, 2008 at 15:48 UTC | |
|
Re: Problems with IPC::Open3
by Anonymous Monk on Nov 01, 2008 at 21:01 UTC | |
|
Re: Problems with IPC::Open3
by Krambambuli (Curate) on Nov 01, 2008 at 20:42 UTC |