in reply to Problem with strict "refs"

nimdokk,
Take a look at the line giving the error:
%{$hashname}=@keysandvalues;
You are using a variable as a variable name. You should probably read why that is usually considered a bad idea. A quick way to get around this is to change your data structure into a HoH. This way the hash name itself is not being created dynamically, but the keys can be.
my %hash; $hash{$hashname} = { @keysandvalues };

Cheers L~R

Update: I thought I would go beyond answering your question and point out a few other things as well.

  • You should indent inside blocks as it makes it easier to read and ensure you don't have mismatched braces
  • my ($key, $value) = split /\s*=\s*/, $_; should probably be using the 3 arg form of split. see perldoc -f split
  • if ($key =~ /^(LocalTran)(\w*)(Number)$/) { $hashname=$value; } is likely a mistake. You are either using capturing parens for no reason or if you mean to match literal parens you should escape them \(
  • $hashname=$value assumes that you will only match one time in your loop. This might be safe, it might not be. If you match more than once, you will clobber a would be hash.
  • {print "$key => ${$_}{$key}\n";} will also be causing a sym ref error with strictures

    I am sure there are some other things, but this should certainly get you started.