Страница 1 из 1

Неправильно проверяется наличие файла. Где ошибка?

Добавлено: 13 ноя 2008, 11:54
accessdenied
Нужна помощь.

Есть скрипт, в котором делается следующее:

open(VMS_RUNNING, "vmrun list");
while ( my $vm = <VMS_RUNNING> ) {
chomp($vm);
print "DEBUG: processing $vm\n";
if ( -f $vm) {
print "DEBUG: file exists\n";
}
}

И вот этот кусок ну ни в какую не работает как надо.

vmrun выдает список путей к файлам виртуальных машин, которые запущены в данный момент. chomp отрезает пробелы и перевод строки. А потом вдруг if не срабатывает, будто файла и нет вовсе, хотя в дебаге печатается правильное имя файла.

В то же время небольшой скриптец работает как надо:
my @afile="/path/to/file";
my ($sfile)=@afile;
if ( -f $sfile ) {
print "DEBUG2: file exists\n";
} else {
print "DEBUG2: no such file\n";
}

В этом маленьком скрипте все как надо - если есть файл - назодит, если нет, то не находит, соответственно.

А в первом скрипте что-то странное, будто логика наоборот.
Есть подозрение что упускаю какое-то нужное преобразование, но сам никак не додумаюсь в чем же все-таки дело.

Кто-нибудь с таким сталкивался? Какие есть идеи?

Re: Неправильно проверяется наличие файла. Где ошибка?

Добавлено: 14 ноя 2008, 11:31
accessdenied
Посидел, обнаружил условие, при котором все это происходит.

В первом скрипте нужны рутовые права, поэтому запускается он через sudo.
Второй же я запускал из-под своего логина.

Если и второй запустить через sudo, то возникает та же ошибка - в упор не видит файлов, к которым получает правильные пути.

Что тут может быть такого особенного при запуске через sudo?
К сожалению не могу проверить как работает если из-под рута запустить, потому как пароля нет.

Re: Неправильно проверяется наличие файла. Где ошибка?

Добавлено: 14 ноя 2008, 17:13
accessdenied
Нашлось в чем дело.

В /path/to/file один каталог не читаем для others, а root не входит в ту же группу, что владелец папки, так что не может получить доступа туда.

Всю голову сломал, а такая фигня.
Тема закрыта.

Re: Неправильно проверяется наличие файла. Где ошибка?

Добавлено: 18 фев 2009, 07:14
Magistr
accessdenied писал(а):Нашлось в чем дело.

В /path/to/file один каталог не читаем для others, а root не входит в ту же группу, что владелец папки, так что не может получить доступа туда.

Всю голову сломал, а такая фигня.
Тема закрыта.

ага согласен ...