Я получил файл с путем в каждой строке. Я вставляю эти строки в массив @dirs
. Некоторые из путей включают переменные среды. Пример правильного файла с путями:
/some/valid/path
$HOME/dir
$SOME_ENV/dir
Каждый путь, я хотел бы проверить, содержит ли он файл с именем abc
. Поэтому я использую:
foreach my $dir (@dirs) {
chmod($dir);
my $file = $dir."/"."abc";
print "invalid dir: $dir" unless((-e $file) && (-s $file));
}
Но по какой-то причине он не распознает переменные окружения, то есть он не работает, даже если $SOME_ENV/dir
содержит файл abc
.
Кроме того, скрипт распознает эти переменные среды, если я использую его следующим образом:
print $ENV{SOME_ENV}."\n";
print $ENV{HOME}."\n";
Кроме того, я попытался использовать abs_path
модуля Cwd
, чтобы получить реальный путь пути (чтобы он не включал переменную среды), но он также не распознает переменная окружения.
почему (-e $file)
не распознает переменную среды? Как я могу решить эту проблему?