There's still nothing in %MYHASH. Yes, you're declaring scope for %MYHASH and everything but just because %MYHASH is declared doesn't mean anything is in it. You have to assign some value or another into it in order for a
while to work. Until there's something in your hash your
while will never get executed and nothing will get printed.
You probably want something like this:
#!/usr/bin/perl -w
use strict;
my ($file_list, $file_data)=@ARGV;
my %MYHASH;
#create hash
sub do_hash {
my $filename=shift;
open(FH, $filename) or die "Can't open $filename: $!\n";
while(<FH>){
my ($Name, $Data)=split,2;
$MYHASH{$Name} = $Data;
}
close FH;
}
do_hash('file_data');
foreach my $key (keys %MYHASH) {
print "$key => $MYHASH{$key}\n";
}
exit;
Note the fact that %MYHASH is assigned a whole bunch 'o data from the file, and after do_hash is completed (and %MYHASH has stuff in it) THEN all the data is printed out. And BTW, it should've probably been split, 2 not split, 1.
Gary Blackburn
Trained Killer