in reply to working with 2 inputs

The inevitable simple, threaded solution:

#! perl -slw use strict; use threads; use Thread::Queue; my $Q = new Thread::Queue; my $cmd = 'perl -le"$|++;print $$ . q[:] . localtime() and sleep 1 for 1..rand( +10)" |'; async{ my $pid1 = open my $fh, $cmd or die $!; $Q->enqueue( $_ ) while <$fh>; close $fh; $Q->enqueue( undef ); }->detach; async{ my $pid2 = open my $fh, $cmd or die $!; $Q->enqueue( $_ ) while <$fh>; close $fh; $Q->enqueue( undef ); }->detach; for( 1.. 2 ) { while( defined( local $_= $Q->dequeue ) ) { chomp; print; } } __END__ c:\test>junk6 3140:Wed Oct 1 16:04:35 2008 216:Wed Oct 1 16:04:35 2008 3140:Wed Oct 1 16:04:36 2008 216:Wed Oct 1 16:04:36 2008 3140:Wed Oct 1 16:04:37 2008 216:Wed Oct 1 16:04:37 2008 3140:Wed Oct 1 16:04:38 2008 216:Wed Oct 1 16:04:38 2008 216:Wed Oct 1 16:04:39 2008 216:Wed Oct 1 16:04:40 2008 216:Wed Oct 1 16:04:41 2008 c:\test>junk6 3308:Wed Oct 1 16:04:46 2008 3804:Wed Oct 1 16:04:46 2008 3308:Wed Oct 1 16:04:47 2008 3308:Wed Oct 1 16:04:48 2008 3308:Wed Oct 1 16:04:49 2008 3308:Wed Oct 1 16:04:50 2008 3308:Wed Oct 1 16:04:51 2008 3308:Wed Oct 1 16:04:52 2008

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re^2: working with 2 inputs
by sktron (Novice) on Oct 01, 2008 at 16:25 UTC
    Yes thanks for that. Unfortunately the servers this will run on are all missing threads.pm So that won't be a solution I can use because updating the servers, which I am not in charge of, is not really an option.
    print "read_set is now: $read_set \n"; $read_set->add(fw1); print "read_set is now: $read_set \n"; $read_set->add(fw2); print "read_set is now: $read_set \n";
    this results in: read_set is now: IO::Select=ARRAY(0x1acf0e4) read_set is now: IO::Select=ARRAY(0x1acf0e4) read_set is now: IO::Select=ARRAY(0x1acf0e4) Is this what's expected after $read_set->add(FH)?
      Unfortunately the servers this will run on are all missing threads.pm

      You build your own win32 Perl?

      this results in: read_set is now: IO::Select=ARRAY(0x1acf0e4)...

      As salva pointed out above, IO::Select doesn't work with pipes on Win32. Follow the link he provided for some alternatives.


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.