Hossein has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

I have the constructor below.

When $self->{INTERFACE = []; was a one dimentional array, I could asign values and get alle the values:

But when $self->{INTERFACE} = ([],[]); is two dimentional array, I CAN asign values which Data::Dumper approve, BUT I can NOT get these values properly :(

All objects are stored in @fw. push (@fw, $self); How can I "traverser" the @fw and get values in: $self->{INTERFACE}?

Thank you :)

sub new { $Census++; my $proto = shift; my $class = ref($proto) || $proto; my $self = {}; $self->{NAME} = undef; $self->{DESCRIPTION} = undef; $self->{INTERFACE} = ([],[]); $self->{ROUTINGTABLE} = ([],[]); $self->{SHAPEID} = undef; $self->{MASTERSHAPE} = undef; bless ($self, $class); return $self; }

The result of Dumper

$VAR3 = bless( { 'INTERFACE' => [ [ 'xxx.xxx.xxx.xxx', '255.255.255.0', 'EMPTY', 'xyz', 'abc', 'EMPTY' ], [ 'xxx.xxx.xxx.xxx', '255.255.255.0', 'EMPTY', 'fds', 'wer', 'EMPTY' ] ], 'NAME' => 'myname', 'DESCRIPTION' => undef, 'ROUTINGTABLE' => [ [ 'xxx.xxx.xxx.xxx', '255.255.255.255', 'xxx.xxx.xxx.xxx', 'gfd', 'zxc', 'DMZ' ], [ 'xxx.xxx.xxx.xxx', '255.255.255.255', 'xxx.xxx.xxx.xxx', 'gfr', 'dbc', 'DMZ' ] ] }, 'NT::FW' );

Replies are listed 'Best First'.
Re: How to traverse a two dimentional array in a constructor? (on airplane list)
by Anonymous Monk on Jun 25, 2013 at 08:38 UTC
Re: How to traverse a two dimentional array in a constructor?
by Anonymous Monk on Jun 25, 2013 at 09:56 UTC

      Thank you for your answer.

      When I work with multiple dimentional array, or nested hashes, everything works just fine. BUT here, when I try to do OO (newbe) I realy am in truble. What I can't do is to get the values on those objects which are stored in @fw in the tight way.

      I need to traverse @fw in order to display vales, but every time I try, it fails!

      I need help to know how shall I travers @fw to get currect values.

      $fw = [ $var1= bless( { 'INTERFACE' => [ [],[],[] ], 'NAME' => 'myname', 'DESCRIPTION' => undef, 'ROUTINGTABLE' => [ [],[],[] ] }, 'NT::FW' ); $var2= bless( { 'INTERFACE' => [ [],[],[] ], 'NAME' => 'myname', 'DESCRIPTION' => undef, 'ROUTINGTABLE' => [ [],[],[] ] }, 'NT::FW' ); ]

        ... I repeat myself ...

        maybe you want to show what you tried?