Для тех, кто не знает Perl autobox
, это модуль, который дает вам методы для встроенных примитивов и позволяет даже переопределять их.
# primitives
'a string'->toupper();
10->to(1); # returns [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
# Arrays, array refs
[qw(A B C D E)]->for_each( sub { ... } );
@array->length()
# Hashes, hash refs
{ key => 'value', key2 => 'value2' }->values()
%hash->keys()
# Even specify your own base class...
use autobox SCALAR => 'Foo';
В целом методы, основанные на встроенных типах, больше напоминают объекты, упрощают некоторые задачи и делают другие более очевидными.
Однако...
autobox
docs говорят, что штрафы за производительность, несколько больше, чем просто вызов метода на объект, намного больше, чем стандартный синтаксис. И тут есть несколько предостережений о его использовании в eval
(в частности, об ошибках строк), которые могут в некоторых случаях вызвать проблемы. также похоже, что он не соответствует стандарту со многими дистрибутивами Perl.
Действительно ли стоит использовать автобокс?