[Moscow.pm] Хочу обычного
s2323
s2323 на land.ru
Чт Окт 17 12:33:39 PDT 2013
Прошлый вариант содержал бред. Вот получше:
package ShortNamer;
no strict;
no warnings;
sub import {
my ($from, %opts) = @_;
if (exists $opts{'-as'}) {
my $to = $opts{'-as'};
my $original_import = $to->can('import');
foreach my $key (keys %{ $from . '::' }) {
if ($key eq 'import' && $original_import) {
*{$to . '::import'} = sub {
import(@_);
goto $original_import;
};
next;
}
*{$to . '::' . $key} = *{$from . '::' . $key};
}
}
}
1;
Подключение (последним в списке require):
package MyCompany::MySchema::Sklad::Feature::SubFeatureClass;
...
require ShortNamer;
ShortNamer->import(-as => __PACKAGE__);
...
1;
Использование:
use MyCompany::MySchema::Sklad::Feature::SubFeatureClass -as => 'Feature';
my $feature_obj1 = Feature->new;
my $feature_obj2 = Feature->new;
Подробная информация о списке рассылки Moscow-pm