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.
In reply to Re^2: Specifying a shell for use with Backticks
by bluto
in thread Specifying a shell for use with Backticks
by gaspodethewonderdog
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |