On Jul 12, drieux said: > >On Thursday, July 11, 2002, at 12:08 , Carson Wilcox wrote: > >> I have a need to source a ksh script from within a perl script. >> Does anyone know if this is possible and how to do it. > >You may need to help us out here - since this sounds like >you have a set of variables being assigned in a ksh fashion >in a 'file' that would normally be simply 'sourced' into >a ksh script with something like > > . /path/to/file > >I have an illustration of this behavior at the end. > >In that illustration, in the main, it is about setting >environmental variables - all of which would be accessed >in perl in th %ENV... > >the quick solution then is to have a simple wrapper script >that sources all of the env context, and then launches >the perl script. > >If on the other hand, one's ksh script is more towards a >'library' where it has a bunch of defined 'functions' - >then your problem can be a bit more complex - and you >have a few strategies to look at: > > a) porting this library to a perl lib, > with a nice little parser code that knows > how to translate ksh syntax into perl syntax > > b) build a ksh wrapper that does the sourcing, and > based upon command line options invokes the > functions in the ksh lib - so that you can > call this in any of the standard perl ways > of back-tick, system() or open(CALL, "wrapper $arg |") .... > >so it rather depends upon which you are really trying to solve >with which 'sourcing' you are using. > >esoterica note: > >I agree with peter on the 'problem' of setting up >the ENV stuff in a child - the solution I have always >used is to 'contain' the ENV information in a script >and then > > exec script > >so as to replace the login shell I was originally >working in, with an alternative definition - as >I did with the ksh scriptology below. > > >ciao >drieux > >--- > >an illustration of a ksh sourcing play > >### #!/bin/ksh >### >### CommonDefFile=${HOME}/etc/drieuxTool.dfn >### >### if [ -f ${CommonDefFile} ] >### then >### . ${CommonDefFile} >### else >### echo "unable to find ${CommonDefFile}" >### exit >### fi >### >### PS="HappyMars > " >### export PS >### ENV=${HOME}/.mars.kshrc >### export ENV >### >### ksh >### >### exit > >where it specifically grabs: >vladimir: 60:] sed 's/^/### /' ${HOME}/.mars.kshrc >### #!/bin/ksh >### >### # >### # the common kornsheel things for a Mars Complex >### # >### >### set -o vi >### alias gobin="cd ${MARS_BIN}" >### alias goconf="cd ${MARS_ETC}" >### alias golog="cd ${MARS_VAR}" >### alias golib="cd ${MARS_LIB}" >### >### alias gotools="cd ${MARS_TOOLS_BIN}" >### >### PS1="HappyMarsLand > " >### >### >vladimir: 61:] > > >-- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] > > >
-- Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/ RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/ ** Look for "Regular Expressions in Perl" published by Manning, in 2002 ** <stu> what does y/// stand for? <tenderpuss> why, yansliterate of course. [ I'm looking for programming work. If you like my work, let me know. ] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]