You might consider one of the following:
- Put the Storage object in a package variable within the Source and Destination classes.
(in Source and Destination):
our $storage; # or:
# our Storage $storage; # I think this works to type it
and in your main code:
use Storage;
my $storage = new Storage();
use Source;
use Destination;
$Source::storage = $storage;
$Destination::storage = $storage;
my $input = 'source.txt';
while (<IN>) {
$source = new Source($_);
$destination = new Destination();
$source->storeData();
$destination->useData();
}
- Pass the Storage object into the constructor of each of the Source and Destination objects:
in your Source and Destination classes, add code to handle setting a Storage object as a parameter to new().
then in your main code:
use Storage;
my $storage = new Storage();
use Source;
use Destination;
my $input = 'source.txt';
while (<IN>) {
$source = new Source($_, storage => $storage);
$destination = new Destination(storage => $storage);
$source->storeData();
$destination->useData();
}
Personally, I prefer the latter solution, since that allows you in the future to have different
Storage objects for different
Source and
Destination objects.