Внутри bash вы можете захотеть сделать что-то вроде этого:
EXPORT_CMD=/tmp/${0}_exports.bsh
perl ...
chmod +x $EXPORT_CMD
$EXPORT_CMD
rm $EXPORT_CMD
Внутри Perl, это:
sub export (@) {
state $exh;
unless ( $exh ) {
my $export_cmd_path = $ENV{EXPORT_CMD};
open( $exh, '>>', $export_cmd_path )
or die "Could not open $export_cmd_path!"
;
}
while ( @_ > 1 ) {
my ( $name, $value ) = (( uc shift ), shift );
# If you want it visible in the current script:
{ no strict 'refs';
${"::$name"} = $value;
}
$exh->print( qq{export $name "$value"\n} );
}
}
И потом, это просто вопрос кодирования этого:
export LOC => '/tmp/1/';
Проблема в том, что большинство программ не могут изменять переменные оболочки, из которых они были вызваны.