Я пытаюсь сделать функцию сортировки доступной в одном из моих (объектно-ориентированных) пакетов, который принимает блок и делает доступными $ a и $ b, как стандартный Perl sort
.Функция сортировки perl в объекте
Во-первых, упрощенная версия того, что я пытаюсь сделать в пакете, который содержит обернутое функцию сортировки:
# In package My::Object
sub sort {
my $self = shift;
my $block = \&{shift @_};
return sort $block @{$self->{arrayRef}}; # I want to use the passed in block with array data contained in this object
}
А потом пример клиента, проходящий блок, который определяет устройство сравнения для запуска для сортировки:
my $obj = My::Object->new([3, 1, 5, 6, 2, 4]); # As an example, these values will be come arrayRef from above
my @sortedVals = $obj->sort({ $a < $b });
есть ли способ сделать то, что я пытаюсь сделать, пока еще в состоянии использовать в Perl sort
?
Оцените свои должности на SO. –
'Синтаксис * {...} ссылается на глобальную переменную по ее имени.« Это кажется забавным способом описания этого синтаксиса, особенно после объяснения того, что такое * typeglob *. Этот синтаксис - это еще один способ написать * typeglob *, где * typeglob * представляет все глобальные переменные с указанным именем ..... – 7stud
Присвоение всех глобальных переменных «a» текущего пакета * typeglob * '* a', для всех глобальных переменных «a» вызывающего, * typeglob * '* {caller. ':: a'}' заставляет глобальные переменные 'a' текущего пакета становиться псевдонимами для глобальных переменных 'a' вызывающего пакета ,Это означает, что при изменении глобальной переменной «a» в текущем пакете она изменяет глобальную переменную «a» в пакете вызывающего. * – 7stud