#!/usr/bin/perl use warnings; use strict; my @dispatch_tables = ( { regex => qr/\w+/, action => sub { print "aaa\n" }, }, { regex => qr/\d+/, action => \&hello_me, }, ); $dispatch_tables[0]->{action}->(); $dispatch_tables[1]->{action}->( "1", "2" ); sub hello_me { print "hello me: @_\n"; } __END__ aaa hello me: 1 2
Update: I guess it is obvious, but if you cycle down this action list running regex'es, the sub hello_me will not get executed because word chars are _a-z0-9 (all of the things can be in a Perl identifier). In other words all digits are "word characters".

I don't know what the "full" application will be like but I would be thinking of using a couple of simple structures, this table being the simple "action" hash for a particular case. 'onlydigits' => sub {}, 'mixed_alphanum' => sub{}. There would another structure to decide what case/situation that you are in. Here it is obvious what the regex does, the actual app may not be so simple and an "extra" level of translation may provide some documentation value.


In reply to Re^2: Subroutines in Dispatch Tables by Marshall
in thread Subroutines in Dispatch Tables by Anonymous Monk

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.