получить ключ и значение hash ref из другого скрипта

Привет всем, у меня есть модуль с подпрограммой, которая получает свои параметры, например. script.pl В script.pl я вызываю функцию следующим образом: moduleName::sunName(\%hashref).
Теперь в модуле и в подтексте я хочу напечатать те параметры, которые были переданы. также я хочу проверить, является ли значение каждого ключа этого href пустым, напечатайте '-' вместо 0. первая часть модуля:

sub printOptions {

   my $opt = shift;
   # I have this
   print $opt->{'id'};
   # But I need all parameters!
 }

спасибо


person Matt Ston    schedule 08.03.2011    source источник


Ответы (2)


Пытаться:

sub printOptions {
  my $opt = shift @_;

  for my $key ( sort keys %$opt ){
    if( defined( $opt->{$key} )){
      print "$key: $opt->{$key}\n";
    }else{
      print "$key: undef\n";
    }
  }
}
person shawnhcorey    schedule 08.03.2011

Мэтт, что ты получаешь в данный момент? Чтобы разыменовать ссылку $opt, вы можете сделать

%opt = %{ $opt }

Чтобы перебрать ключи, вы можете сделать

for my $key ( sort keys %opt ) {
    print "$key: " . ($opt{ $key } || '-') . "\n";
}
person Mauritz Hansen    schedule 08.03.2011
comment
Опечатка: вам не нужно $value. - person FMc; 08.03.2011
comment
Еще один, нужны круглые скобки не фигурные для итерируемого списка (sort keys %opt) - person Joel Berger; 08.03.2011
comment
Спасибо, Джо. В прошлый раз я просто набираю здесь комментарии без проверки. ;-) - person Mauritz Hansen; 09.03.2011