Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re^2: Specifying a shell for use with Backticks

by bluto (Curate)
on Apr 12, 2006 at 15:29 UTC ( #542859=note: print w/replies, xml ) Need Help??

in reply to Re: Specifying a shell for use with Backticks
in thread Specifying a shell for use with Backticks

If you really can't get backticks to use a reasonable shell, perhaps you can trick it. For example in ksh, you can do something like this...

my $output = `PATH=$ENV{PATH} command arg1 arg2 argn`;

... which sets PATH just for the command. Just be careful you know what is in $ENV{PATH} (e.g. no spaces; not user supplied). I don't know if this syntax will work for csh also, so perhaps something ugly like...

my $output = `setenv PATH "$ENV{PATH}"; command arg1 arg2 argn`;

An alternative, if you are only worred about the PATH, might be to supply a fullpath to backticks (i.e. dont give the shell a chance to locate it - just tell it)...

my ($cp) = grep { -x $_ } map { "$_/cp" } grep { length $_ } split /:/ +, $ENV{PATH}; die "cant find cp" unless defined $cp; my $output = `$cp source dest`;

IMO these seem like band-aids for the real problem. Using csh is just unsafe, outside of an interactive shell.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://542859]
Discipulus what?! penitentiagite monaci!

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2018-06-21 20:26 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (119 votes). Check out past polls.