Вы должны иметь возможность сделать что-то вроде:
sub make {
my ($self, $item) = @_;
my $method = "make_$item";
$self->$method(whatever);
}
Редактировать: Возможно, вы также захотите использовать can()
, чтобы убедиться, что вы вызываете метод, который может бытьзвонил:
sub make {
my ($self, $item) = @_;
my $method = "make_$item";
if ($self->can($method)) {
$self->$method(whatever);
} else {
die "No such method $method";
}
}
Редактировать 2: На самом деле, теперь, когда я думаю об этом, я не уверен, что вы действительно можете это сделать.Код, который я написал ранее, делает что-то подобное, но он не использует объект, он использует класс (так что вы вызываете определенную функцию в классе).Это может сработать и для объектов, но я не могу этого гарантировать.