You have quite a number of problems with your code, i'll attemp to rewrite some of your code, but not all. Try this out:
I see no reason to store the data file in a transitory array, better to just make the object as you parse the line. So, each line is read and split on a comma with optional surrounding whitespace. The results are passed to the object's constructor, which passes them to it's internal _init() method.use strict; use Data::Dumper; my @agents; open (FH,'matrix.csv'); while(<FH>) { chomp; push @agents, VRTSAgent->new(split(/\s*,\s*/,$_,6)); } close FH; print Dumper $_ for @agents; package VRTSAgent; use strict; use Carp; use Data::Dumper; sub new { my $class = shift; my $self = _init(@_); return bless $self, $class; } sub _init { my %init = ( agent => undef, os => [shift,shift], version => [@_], ); return \%init; } # here is how i would code _dump_os # note: if the client is going to call a method # then don't prefix that method with an underscore! # only private methods should be prefixed with underscores sub dump_os { my $self = shift; print Dumper($self->{os}); } # you could call it like so: $_->dump_os for @agents;
I totally got lazy with the _init() method - this is not good code (see Shift versus Sanity for discussions on why) , but i hope this gives you a new perspective on a hard part of this problem - turning each data piece into an attribute. Good luck, and let us know if you have any other problems in your endeavor.
jeffa
L-LL-L--L-LL-L--L-LL-L-- -R--R-RR-R--R-RR-R--R-RR B--B--B--B--B--B--B--B-- H---H---H---H---H---H--- (the triplet paradiddle with high-hat)
In reply to (jeffa) Re: When I try to create different objects i end up getting the same one over and over...
by jeffa
in thread When I try to create different objects i end up getting the same one over and over...
by krujos
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |