Change
my %q=@_;
to something that processes @_ into my %q, like
#!/usr/bin/perl
#A quick easy way to do it given @keys (array of keys) and @values
#(array of values):
#@hash{@keys} = @values;
#This will set up the key/value pairs in %hash.
#The real pain here is that the files have to be in sync otherwise
#the data becomes a mess.
#Given the above:
my @MyArray1 = qw(5 4 3 2 1 6 9 11 12);
my @MyArray2 = qw(cat dog mouse mice tree shrub sap unix max);
if ( scalar(@MyArray1) != scalar(@MyArray2) ) {
printf "Expecting two equal size arrays, but got the following:\n";
printf "MyArray1: %5d MyArray2: %5d\n";
die "Incorrect data setup";
}
my %MyHash = ();
while ( scalar(@MyArray1) ) {
my $MyKey = pop(@MyArray1);
my $MyData = pop(@MyArray2);
$MyHash{$MyKey} = $MyData;
}
foreach my $MyKey (sort {$a <=> $b} keys %MyHash) {
printf "%4d: %-s\n", $MyKey, $MyHash{$MyKey};
}