G'day seismofish,

Welcome to the Monastery (at least with respect to posting).

You can use constants to avoid:

Here's an example:

#!/usr/bin/env perl use strict; use warnings; use constant { MON => 0, DAY => 1, TIME => 2, INTERFACE => 3, RATE => 4, DUPLEX => 5, LPA => 6, }; use Test::More tests => 12; my $re_dn = qr{^(\w+) (\d+) (\d{2}:\d{2}:\d{2}) .*: eth(\d): link down +}; my $re_up = qr{^(\w+) (\d+) (\d{2}:\d{2}:\d{2}) .*: eth(\d): link up, +(\d+)Mbps, ([^,]+), lpa (\w+)}; my @logs = ( 'May 19 13:58:01 foo: eth0: link down', 'May 19 13:58:11 foo: eth0: link up, 100Mbps, bar, lpa quux', '# some comment in the logfile', ); for (@logs) { my @matches; if (@matches = /$re_dn/) { is $matches[MON], 'May'; is $matches[DAY], 19; is $matches[TIME], '13:58:01'; is $matches[INTERFACE], 0; } elsif (@matches = /$re_up/) { is $matches[MON], 'May'; is $matches[DAY], 19; is $matches[TIME], '13:58:11'; is $matches[INTERFACE], 0; is $matches[RATE], 100; is $matches[DUPLEX], 'bar'; is $matches[LPA], 'quux'; } else { is 0+@matches, 0; } }

Output:

1..12 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12

— Ken


In reply to Re: scan, match and extract by kcott
in thread scan, match and extract by seismofish

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.