Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: For loop: Hash

by hdb (Prior)
on Jul 02, 2013 at 08:47 UTC ( #1041979=note: print w/ replies, xml ) Need Help??


in reply to For loop: Hash

My principles are:

  • for plain lists use arrays (or array references),
  • for lists with named attributes use hashes (or hash references).
So both on the router level and on the peer level you have plain lists, otherwise you have named attributes. So I would propose the following, which also allows for a simpler iteration over the structure:

use strict; use warnings; my $router_data = [ # array of hashes for each router { # hash for router 1 routerName => 'asr01', ipAddr => '1.1.1.1', bgpPeer => [ # array of hashes for each peer { # hash for first peer Name => 'PEER1', ASN => '111', prefixList => 'PREFIX-PEER1-OUT', }, { # hash for second peer Name => 'PEER2', ASN => '222', prefixList => 'PREFIX-PEER2-OUT', }, ], }, { # hash for router 2 routerName => 'asr02', ipAddr => '2.2.2.2', bgpPeer => [ # array of hashes for each peer { # hash for first peer Name => 'PEER1', ASN => '333', prefixList => 'PREFIX-PEER1-OUT', } ], }, ]; for my $router ( @$router_data ) { print $router->{routerName}." : \n"; for my $peer ( @{ $router->{bgpPeer} } ) { print $peer->{prefixList}."\n"; } }


Comment on Re: For loop: Hash
Download Code
Re^2: For loop: Hash
by admiral_grinder (Pilgrim) on Jul 02, 2013 at 16:27 UTC
    This is a great answer. To expand on it, the OP mentions that he is new to Perl, and perhaps an early programmer (or not, I don't know). Once you start using this layout, and you are finding that you need more logic and functionality against a Router, or a Peer, then it will be easy to break that part of the structure out into a class of its own.
Re^2: For loop: Hash
by nickt9999 (Acolyte) on Jul 04, 2013 at 10:24 UTC

    Many thanks for this.

    I have used this as the way forward.

    Cheers

    Nick

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1041979]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2014-12-26 00:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (163 votes), past polls