Как работает следующее?Печать возвращаемого значения из функции в Perl
print "Property is :" . $property->name("NODE_HOST") . "\n";
, но не это:
print "Property is : $property->$name("NODE_HOST")\n";
Компилятор жалуется на втором фрагменте:
Bareword found where operator expected at ./testProperties.pl line 11, near ""Property is : $property->$name("NODE_HOST"
(Missing operator before NODE_HOST?)
Perl обычно является довольно спокойна о принятии ярлыков при печати из комбинаций строк и переменные. $property->name
призыв к классу имущества, который возвращает значение имени передается в:
sub name {
my ($self, $propertyName) = @_;
my $hash_ref = $self->{_hashref};
my %properties = %$hash_ref;
my $property = $properties{$propertyName};
return $property;
}
Почему downvote? – DVK
В качестве дополнительной заметки ваше «подзаголовок» может быть упрощено. Избавьтесь от '% свойств и $ property' и просто получите доступ к элементу hashref напрямую:' return $ hash_ref -> {$ propertyName}; '.Или даже избавиться от '$ hash_ref' и сделать' return $ self -> {_ hashref} -> {$ propertyName}; ' – DVK