I tried my best to read copious threads on this site regarding the subject of passing hashes. To say the least, this subject has been hashed and rehashed (sorry).
I cannot seem to correctly pass hashes as references. I will need to do this in order to pass more than one hash or a hash along with other parms.
I keep getting errors along the likes of:
Not a CODE reference at ./hashTest.pl line 33.
or:
Can't use string ("me") as a HASH ref while "strict refs" in use ...
The code resembles most of the reference examples on this site. I get the errors on Linux and IRIX.
#!/usr/bin/perl -w
use strict;
my %hash = (
's' => '1',
'e' => '200',
'b' => '1',
'me' => '0',
'mf' => '0',
'im' => '/usr/tmp/cache/ccarden/earth/images/earth',
'pad' => '4',
'yh' => '191',
'yl' => '0',
'of' => 'jpg',
'x' => '1024',
'y' => '768'
);
sub print_h {
my %new_hash = @_;
foreach (keys %new_hash) {
print " Key: $_,\t Value: $new_hash{$_}\n";
}
}
sub print_h_byref {
my $href = shift;
my ($value, $key);
foreach $key (keys %$href) {
$value = $href->($key);
print " Key: $key,\t Value: $value\n";
}
}
print_h (%hash);
print "\n";
print_h_byref (\%hash);
I don't know if anyone else will get the errors. Judging by the examples I've seen, I think not. But any elucidation and correction would be much appreciated. Thanks.