[Moscow.pm] Хочу обычного

s2323 s2323 на land.ru
Чт Окт 17 09:41:54 PDT 2013


Как вариант самодельной педали:

package ShortNamer;

no strict;
no warnings;

sub import {
    my ($from, %opts) = @_;

    my $original_import;
    if (exists $opts{'-as'}) {
        my $to = $opts{'-as'};
        $original_import = $to->can('import');
        foreach my $key (keys %{ $from . '::' }) {
            *{$to . '::' . $key} = *{$from . '::' . $key};
        }
    }
    if ($original_import) {
        goto $original_import;
    }
}

1;


Далее, используем его в MyCompany::MySchema::Sklad::Feature::SubFeatureClass (через одно место, конечно, но чтоб ничего не сломать, и чтоб работало, пишем последним в списке require):

package MyCompany::MySchema::Sklad::Feature::SubFeatureClass;

...
require ShortNamer;
ShortNamer->import(-as => __PACKAGE__);
...

1;

Ну и далее по месту использования:

use ShortNamer;
use MyCompany::MySchema::Sklad::Feature::SubFeatureClass -as => 'Feature';

my $feature_obj1 = Feature->new;
my $feature_obj2 = Feature->new;


Подробная информация о списке рассылки Moscow-pm