in reply to Command line works

Consider what we want to do:

cd ../../;. setup-env

In this snippet, the "cd" only serves to locate the file "setup-env". The dot (".") says to read the file and execute its commands in the current shell. Since we don't have a current shell, we can specify one explicitly ("sh" in this case):

my $retval = qx{ sh < ../../setup-env };

or use the default shell:

my $retval = qx{ . ../../setup-env };

Keep in mind that the default shell may not be your login shell.