gmarler

IO::Async Expect

Nov 27th, 2015
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.73 KB | None | 0 0
  1. #!/usr/bin/env perl
  2.  
  3. use v5.20;
  4. use strict;
  5. use warnings;
  6.  
  7. use IO::Async::Process;
  8.  
  9. use IO::Async::Loop;
  10. my $loop = IO::Async::Loop->new;
  11.  
  12. my $mdb_memstat = IO::Async::Process->new(
  13.   command => [ "/bin/mdb", "-k" ],
  14.   stdin   => { via => "pipe_write" },
  15.   stdout  => { via => "pipe_write" },
  16.  
  17.   on_finish => sub {
  18.     say "mdb exited";
  19.     $loop->stop;
  20.   },
  21. );
  22.  
  23. $mdb_memstat->stdout->configure(
  24.   on_read => sub {
  25.     my ( $stream, $buffref ) = @_;
  26.     say "mdb data available";
  27.     while ( $$buffref =~ s/^(.+)\n\>\s//smx ) {
  28.       say "Got a prompt after:\n$1";
  29.     }
  30.     $mdb_memstat->stdin->write('$q' . "\n");
  31.  
  32.     return 0;
  33.   },
  34. );
  35.  
  36.  
  37. $loop->add( $vmstat );
  38. $loop->add( $mdb_memstat );
  39.  
  40.  
  41. $loop->run;
Advertisement
Add Comment
Please, Sign In to add comment