Stella: Hash übergeben; for %hash

Beitrag lesen

Hi selfer!

ich möchte ein Hash an eine Methode übergeben und diesen Hash dann durchlaufen ($key, $value).

my %hash = {a => 'foo', b => 'bar'};  
test1(%hash);  
  
sub test {  
  my $self = shift;  
  my %hash = shift;  
  while ( my ($key, $value) = each(%hash) ) {  
    print "$key => $value\n";  
  }  
  # oder  
  for my $key ( keys %hash ) {  
    my $value = $hash{$key};  
    print "$key => $value\n";  
  }  
}

bei beiden Schleifen erhalte ich nur "HASH(0x84189c4) => " als Ausgabe.
Warum wird 1. die Schleife nur einmal durchlaufen und 2. warum erhalte ich nicht den Schlüssel und den Wert?

3. Wie kann ich überprüfen, ob 1 Parameter übergeben wurden?
@_ == 2 || die 'xyz';
schlägt immer fehl, da @_ 3 (warum 3?) ist.

Danke und eine friedliche Nacht :-)
Stella