Since your first line really wants a boolean, I would have changed your first line to something like:

$send_flag = ($bbstatus ne $last_bbstatus) or (($now - $last_send_time) > $min_frequency) or defined($OPTS::opts{f});

If you're really looking for a dispatch table you could do something like:

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]->(); }

Note: the above is completely untested.

Update: I thought of another way of implementing this while in the shower. It does avoid the dispatch table, and it does set the correct variables based on the booleans. Still, it may not be easy to read for newer Perl developers.

my $send_message = ($bbstatus ne $last_bbstatus and "Status no changed") or (($now - $last_send_time) > $min_frequency and "Last send too o +ld") or (defined($OPTS::opts{f}) and "Forced send requested") or "No changes"; my $send_flag = $send_message ne "No changes";

In reply to Re: Is a Dispatch Table appropriate here? by Belgarion
in thread Is a Dispatch Table appropriate here? by McDarren

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.