2015-02-05 4 views
1

У меня есть файл «temp.txt», содержащийОбъявление переменных среды, перечисленные в файле, используемые в Perl Shell

var1=hello 
var2=ello 
var3=mello 
....and a long list 

в Unix оболочки мы можем просто использовать . temp.txt это использовать все переменные в файле ..

мы имеем аналогичную функцию в Perl или любой работы вокруг ..

Я попытался обойти

$ cat checkDOTfuctionOFunix.ksh 
#!/bin/ksh 
. /export/home/temp.txt 
#export 

/export/home/checkDOTfuncPRINTSinPERL.pl 

$ cat /export/home/checkDOTfuncPRINTSinPERL.pl 
#!/usr/local/bin/perl 

print "var1=$ENV{var1} \n\n var2=$ENV{var2} \n\n"; 

, но это не будет работать, если я не экспортирую каждое значение, которое можно сделать с помощью простого sed -e 's/^/export/, но я предпочитаю не делать этого. пожалуйста, помогите :)

ответ

1
set -a 
. temp.txt 
set +a 
./checkDOTfuncPRINTSinPERL.pl 

с множеством -a, как описано here, все переменные задания способствуют переменной в переменную окружения.
Here Некоторые документы для установки оболочки.

+0

Cheers !! это работает .. но есть ли команда, подобная этой в perl ... Я бы хотел избежать вызова скрипта perl из сценария оболочки ksh и напрямую использовать файл 'temp.txt' в' checkDOTfuncPRINTSinPERL.pl' –

0

Это возможно в Perl с Env::Modify module.

use Env::Modify 'source'; 
source("temp.txt");  # like saying . temp.txt in the shell 
.. env settings in temp.txt are now available to Perl ... 
Смежные вопросы