Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: Need advice on how to break foreach parsing loop into functions

by Prof Vince (Friar)
on Sep 16, 2007 at 08:36 UTC ( #639236=note: print w/replies, xml ) Need Help??


in reply to Re: Need advice on how to break foreach parsing loop into functions
in thread Need advice on how to break foreach parsing loop into functions

For expanding Anno's solution, you can use a dispatch table to apply the corresponding policy :
my %parsers = ( 'Ethernet' => sub { my $chunk = shift; $chunk =~ tr/\n/ /; return "ETHERNET: $chunk"; }, 'Gigabit' => sub { my $chunk = shift; $chunk =~ tr/\n/ /; return "GIGABIT: $chunk"; } ); $/ = "!\n"; $\ = "\n"; while ( <DATA> ) { chomp; if ( /^interface (.*)/ && $1 && exists $parsers{$1} ) { print $parsers{$1}( $_ ); } elsif ( /^system (.*)/ ) { # blah... } }
Edit: As anonymous said, ( ) instead of { }. Copypasta from/to Firefox is treacherous.

Replies are listed 'Best First'.
Re^3: Need advice on how to break foreach parsing loop into functions
by Anonymous Monk on Sep 16, 2007 at 17:22 UTC
    the statement

    my %parsers = { ... };

    seems wrong. should it not be

    my %parsers = ( ... );

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://639236]
help
Chatterbox?
and John Coltrane plays...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2016-12-04 20:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (69 votes). Check out past polls.