To summarise even further :) The problem I saw was this...
You have a function which returns a reference to a hash like this:
sub make_hash {
my %hash;
# Do clever stuff to fill in values in hash
return \%hash;
}
which you call to get a reference to a hash which you store in a scalar called $thisDataset like this:
my $thisDataset = make_hash();
Later on you pass this hash to another function which
assumes that its first parameter is a hash reference like this:
sub do_stuff_to_hash {
foreach (keys %{$_[0]}) {
# do something with each key
}
}
do_something_with_hash($thisDataset);
All this is fine, but later still you suddenly start to treat $thisDataset as if it's a hash by accesing it like this:
$thisDataset{$curr_month};
This is the error that use strict picked up as it realised that you were accessing both the scalar $thisDataset and the hash %thisDataset. I suspect that want you really wanted to do was something like:
$thisDataset->{$curr_month};
use strict is your friend. Use use strict.
--
<http://www.dave.org.uk>
European Perl Conference - Sept 22/24 2000, ICA, London
<http://www.yapc.org/Europe/> |