package TestPackage; sub new () { my $class = shift; my %opts = @_; my $self = {}; if (exists($opts{'username'}) && (exists($opts{'password'}))){ $self->{'username'} = $opts{'username'}; $self->{'password'} = $opts{'password'}; bless $self, $class; }else{ return undef; } $self->_init_Authentication; return $self; } sub Identities () { my $self = shift; if (exists($self->{'identities'})) { return @{$self->{'identities'}}; }else { return undef; } } sub BuddyList () { my $self = shift; if (exists($self->{'buddy_list'})){ return %{$self->{'buddy_list'}}; }else{ return undef; } } sub _init_Authentication () { my $self = shift; ## ---- snip lots of code ---- ## assume $buddylist = "group1:name1,name2\ngroup2:name2,name3\n...etc..." my %buddylist; my @groups = split /\n/, $buddylist; foreach (@groups) { my ($group,$names) = /^(.+?):(.+)/; $buddylist{$group} = [ split /,/, $names ]; } # ---- snip more code ---- # assume $myident = myname1,myname2, etc... my @identities = split /,/, $myident; $self->{'buddy_list'} = \%buddylist; $self->{'identities'} = \@identities; } 1;