Beefy Boxes and Bandwidth Generously Provided by pair Networks Frank
XP is just a number
 
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.


Comment on Re^2: Need advice on how to break foreach parsing loop into functions
Select or Download Code
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 the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2014-04-21 08:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (492 votes), past polls