在从子命令导入环境时,我想将从bash脚本导出的所有环境变量添加到散列中.当program
运行时,它将设置一些变量并导出它们.我想将这些变量保存在Perl脚本中以供日后使用.但是我不想采用子命令中定义的bash函数.目前,我有一个块像:
foreach (`program; env`) { next if /^\(\)/; my ($a, $b) = split("=", $_); if( /^(\w+)=(.*)$/ ) { $hash{$1} = $2; } }
有一个更好的方法吗?我不确定匹配initial()是否安全.用于处理环境变量中的换行符的加分点,我现在只是闭上眼睛.
你想要的是: Shell-EnvImporter
一个例子:
use Shell::EnvImporter; # Import environment variables exported from a shell script my $sourcer = Shell::EnvImporter->new( file => $filename, ); my $result = $sourcer->run() or die "Run failed: $@";