Проблема приоритета.
print Dumper \%hash . "\n";
означает
print(Dumper(\%hash . "\n"));
, но вы хотите
print(Dumper(\%hash) . "\n");
Дело в том, что значение, возвращаемое Dumper
, уже будетзакончите новую строку, так что вам действительно не нужна другая.Следующее будет делать:
print(Dumper(\%hash));
Если вы хотите опустить парены, здесь нет никакого вреда.
print Dumper \%hash;
Что касается предупреждения, связанного с прототипом, вы получаетеэто потому, что компилятор встречает вызов подпрограммы с прототипом до объявления этой подпрограммы.В этой ситуации при вызове не использовался прототип, поэтому Perl сообщает вам, что это произошло.
Простое решение состоит в том, чтобы просто удалить бесполезный прототип (()
в sub get_hash_from_json ()
).