Для тех, кто не знает о 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
говорят о том, что штрафы за производительность , несколько больше, чем просто вызов метода для объекта, намного больше, чем стандартный синтаксис. И затем, есть несколько предостережений по поводу его использования в eval
s (в частности, уклонение строк), которые могут, в некоторых обстоятельствах, вызывать проблемы. Также похоже, что это не входит в стандартную комплектацию многих Perl дистрибутивы.
Стоит ли когда-нибудь использовать autobox?