my @actions = ( [qr/pattern1/, "response1", sub { dostuff.. } ], [qr/pattern2/, "response2", sub { do_other_stuff.. }], [qr/pattern3/, "response3", sub { do_this_stuff.. } ], ); $exp->expect($timeout, map { my ($pattern, $response, $code) = @$_; [ $pattern, sub { select(undef, undef, undef, 0.25); $exp->send($response); $code->(); } ]; } @actions);