Я чувствую, что это может быть глупый вопрос или даже один из тех неожиданно подстрекательских;Тем не менее мне любопытно.
У меня есть файл конфигурации, который я прочитал, а затем на основе содержимого создаю объекты разных типов.Хорошей моделью был бы каталог библиотеки.Допустим, у меня есть пакеты (классы) Books :: Historical, Books :: SciFi, Books :: Romance и т. Д. И в конфигурации есть хэши, такие как
%book = (
type => 'SciFi',
name => 'Journey to the Center of the Earth',
...
);
Когда я читаю файл conf, который хочу создатьобъекты этих типов.Я знаю, что мог бы сделать что-то вроде:
my $book_obj;
if ($book{'type'} eq 'SciFi') {
$book_obj = Books::SciFi->new();
#do stuff with $book_obj
} elsif ($book{'type'} eq 'Romance') { ...
, но мне было интересно, есть ли способ сделать что-то более похожее на
my $book_obj = Books::$book{'type'}->new();
, чтобы мне не нужно было настраиватьОгромное ли дерево?
PS.да, я, вероятно, буду содержать эту функциональность в пакете Книги, то есть не раскрываться, но в конечном итоге мне придется разбираться с этим любым способом, которым я это делаю.