package MyPackage;
use strict;
use IMAP::Client;
use Config::Simple;
use Carp;
sub new {
my $class = shift;
return bless {}, ref($class) || $class;
}
sub load_config {
my $self = shift;
$self->{'config'} = Config::Simple->new(@_);
return $self->{'config'};
}
sub connect_to_imaphost {
my $self = shift;
my $config = $self->{'config'}
or croak "ERROR : Connect to imaphost without loading config";
$self->{'imap'} = Mail::IMAPClient->new(
Server => $config->{'IMAP_HOST'},
User => $config->{'EM_UNAME'},
....
);
return $self->{'imap'};
}
# accessor functions
sub imap { return shift->{'imap'}; }
sub config { return shift->{'config'}; }
####
use MyPackage;
my $pkg = MyPackage->new();
$pkg->load_config('my.conf');
$pkg->connect_to_imaphost();
####
my $msg_count = $pkg->imap()->message_count( ... );