Переменная $ddd
не установлена * в оболочке, которую вы вызываете из скрипта Perl.
Обычные переменные оболочки не наследуются подпроцессами. Переменные среды:
Если вы хотите, чтобы это работало, вам нужно выполнить одно из следующих действий в вашей оболочке, прежде чем запускать скрипт Perl:
ddd=arraytest.pl ; export ddd # sh
export ddd=arraytest.pl # bash, ksh, zsh
setenv ddd arraytest.pl # csh, tcsh
Это сделает переменную окружения $ddd
видимой из вашего скрипта Perl. Но тогда, вероятно, имеет больше смысла ссылаться на него как $ENV{ddd}
, а не передавать литеральную строку '$ddd'
в оболочку и позволять ей расширять ее:
$var = `ls -l $ENV{ddd}`;