in reply to Re: substitute of dotsh.pm
in thread substitute of dotsh.pm

use YAML; %ENV = %{ Load `sh -c ". rcfile; perl -MYAML -e'print Dump \\%ENV'"` } +;
Why start two layers of sh? You're already in an sh when you do the backquotes!
use YAML; %ENV = %{ Load qx{. rcfile; perl -MYAML -e 'print Dump \\%ENV'} };

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.

Replies are listed 'Best First'.
Re: •Re: Re: substitute of dotsh.pm
by Anonymous Monk on May 25, 2004 at 04:14 UTC
    Thanks for your help, Well i did install YAML in my perl and i run the script
    eval 'exec perl $0 ${1+"$@"}' # -*- perl -*- if $running_under_some_shell; use YAML; print "Path is "; print $ENV{PATH}; %ENV = %{ Load qx{.rcfile; perl -MYAML -e 'print Dump \\%ENV'} }; print "Path is now "; print $ENV{PATH};
    where my .rcfile contains
    #!/bin/csh -f source /usr/applis/common/sourcefiles/solaris/unicad_24
    But when i run the perl script , i get the error
    --- !perl/YAML::Error code: YAML_LOAD_USAGE msg: 'usage: YAML::Load($yaml_stream_scalar)' ... at test.pl line 8 Path is /usr/applis/perl/5.005_03/bin: /usr/applis/common/bin:/usr/a +pplis/common/bin: /usr/bin:.:/usr/dt/bin:/usr/openwin/bin: /bin:/usr/ +ucb:/usr/local/bin:/usr/applis/common/bin: .:/home/rishis:/home/rishi +s/bin:/usr/local/bin: .:/home/rishis:/home/rishis/bin:/usr/local/bin: + .:/home/rishis:/home/rishis/bin:/usr/applis/unicad/24/Ukernel
    As i am a newbee to YAML i am unable to figure the problem THanks for your help in advance!!!

    Edited by Chady -- added code tags (and the spaces in the path list so that it wraps)