my @messages = ( [ sub { $bbstatus ne $last_bbstatus }, "Status not changed" ], [ sub { ($now - $last_send_time) > $min_frequency }, "Last send too old" ], [ sub { defined($OPTS::optf{f}) }, "Forced send requested" ], [ sub { 1 }, "No changes" ], ); foreach my $m (@messages) { print $m->[1], last if $m->[0]->(); }