Eval - это зло, если вы действительно не знаете, что делаете (думайте о нем как о неэкранированном термоядерном ядерном оружии - конечно, вы могли бы справиться с ним, если бы пришлось, и это могло бы даже спасти мир, но вы были бы лучше оставь это в крайнем случае, и пусть физики-ядерщики справятся с этим.)
Вы можете поместить свой код all_objects.pl
в модуль, а затем использовать модуль в командной строке:
поместите это в AllObjects.pm:
package AllObjects;
use strict;
use warnings;
sub get_all_objects
{
# code here...
}
1;
Теперь в командной строке:
perl -I. -MAllObjects -wle'for my $obj (AllObjects::get_all_objects()) { print "object is $obj" }'
Однако не совсем понятно, чего вы пытаетесь достичь с помощью общего дизайна.
Вы можете узнать больше о вызове командной строки perl в perldoc perlrun , а также о создании модулей в p erldoc perlmod (а также о многих публикациях здесь, в Переполнение стека). *