Saturday, August 29, 2009

How::Do::I::Alias::This::Package::Name

Простой способ создания алиасов для перловых классов с именами типа Really::Long::Package::Names::You::Cant::Remember

use Really::Long::Package::Names::You::Cant::Remember;
sub MyRemember () { 'Really::Long::Package::Names::You::Cant::Remember' }

my $object = MyRemember->new; 

Достоинства этого метода:
  1. Никаких заморочек с нэймспейсами.
  2. Алиас подставляется на этапе компиляции (constant function), т.е. потерь в производительности нет.
  3. Ну и меньше печатания :-)
See also: aliased

2 comments:

  1. А насколько велика потеря производительности в случае:
    my $my_remember = "Really::Long::Package::Names::You::Cant::Remember";
    my $object = $my_remember->new();
    ?
    Учитывая, что дальше работа идёт с $object...

    ReplyDelete
  2. Если дальше работа идёт с $object, то наверно небольшая :-)
    Согласен, надо было привести пример с пэкэджем, в котором определено 150 inline констант, которые надо вызывать типа
    Really::Long::Package::Names::You::Cant::Remember->USEFUL_CONSTANT_1
    Really::Long::Package::Names::You::Cant::Remember->USEFUL_CONSTANT_2
    Really::Long::Package::Names::You::Cant::Remember->USEFUL_CONSTANT_3
    ...

    ReplyDelete