I would have thought, based on documentation I read, that seeing shell metacharacters in the open string would have caused perl to automatically invoke a shell.
Yes, you are executing /bin/sh (or whatever perl -V:sh returns) to execute the shell command /usr/bin/bash -login command builtin declare -p -F.
But why? It would make more sense to execute bash directly. With the missing -c that's causing your error, we get
open( my $spawnFH, "-|", "/usr/bin/bash", "-login", "-c" => "command builtin declare -p -F", )
Also, it makes no sense to make the shell configurable when the command you execute is a bash command, so I have hardcoded it.
In reply to Re: Using Perl's open() to investigate bash login environment
by ikegami
in thread Using Perl's open() to investigate bash login environment
by Intrepid
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |