connect_to_event_source_one; connect_to_event_source_two; use Anyevent; sleep($sometime); if($internal_variable == $something_else){ do_some_action; event_source_two recv; if($internal_variable2 == $new_expected_external_state) { yet_another_action; } } Anyevent::condvar->recv;