Вы можете сделать это в два этапа. Вы хотите создать сохраненную структуру данных Perl, если вы еще этого не сделали, а когда у вас есть, сохраненную версию, чтобы вам не приходилось анализировать ее снова.
Есть несколько способов сделать это, но вот версия, использующая Storable :
use Storable qw(nstore retrieve);
my $stored_data_structure = 'some_file_name';
my $data = do {
# from the stored data structure if it is there
if( -e $stored_data_structure ) {
retrieve( $stored_data_structure );
}
# otherwise parse the xml and store it
else {
my $data = $xml->XMLin( $xml_filename );
nstore( $data, $stored_data_structure );
$data;
}
};
Вы могли бы также рассмотреть возможность перевернуть свою концепцию. Вместо сценария оболочки, который вызывает ваш Perl-скрипт, пусть ваш Perl-скрипт вызывает ваш сценарий оболочки:
# load the data, as before
# set some environment variables
$ENV{SomeThing} = $data->{SomeThing};
# now that the environment is set up
# turn into the shell script
exec '/bin/bash', 'script_name'