in reply to Re: AnyEvent weirdness w/ open() and/or ``'s
in thread AnyEvent weirdness w/ open() and/or ``'s
I appreciate your response. My familiarity w/ AnyEvent isn't too great and your response has helped greatly. What I ended up doing which I believe to look extremely ugly follows my comments. (again heavily modified)
To provide further details to hopefully paint a full picture .... I have two sources. One is from a command, and another is from a file. Both sources are pulled into an array and what I believe the below achieves is sending messages to the intersection of the arrays.
The below works with my limited testing and I appreciate the guidance thus far you've provided. I don't need further help unless of coarse you see something glaringly wrong, but until then, thanks James.
$muc->reg_cb( message => sub { my ( undef, undef, $msg ) = @_; my @connected_users = (); open my $fh, '-|', 'command_that_outputs_users' or die $!; my $w; $w = AnyEvent->io( fh => $fh, poll => 'r', cb => sub { my $user = $fh->getline; return if !defined($user); chomp($user); push(@connected_users, $user); if(eof($fh)){ close($fh); undef $w; open($fh, "< $file") or die $!; my $w2; $w2 = AnyEvent->io( fh => $fh, poll => 'r', cb => sub { my $user = $fh->getline; return if !defined($user); chomp($user); if($user ~~ @connected_users){ AnyEvent::XMPP::IM::Message->new( body => construct_body( $msg->body, $from ), to => "$user\@" . HOST, type => "chat", )->send($conn); close($fh); undef $w2; } } ); } } ); }, );
|
|---|