Forum Webscript.Ru

Программирование => Perl => Тема начата: Billi от 28 Июля 2004, 17:10:08

Название: Определить место положения файла
Отправлено: Billi от 28 Июля 2004, 17:10:08
Есть скрипт проверяющий несколько сайтов, и отчет об этой проверке сохроняет в файл(файл на ходится в одной директории со скриптом). Если просто запусть его
все ок, при запуске через corn отчет не сохраняется, повсей видимостит скрипт не может открыть файл, так ли это?
Если это так то как можно из скрипта определить его место положение (полный путь)?

Я провел простой  тест

#!/usr/bin/perl
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
 $mon=$mon+1;
 $year=$year+1900;
 $s=" $mday.$mon.$year $hour:$min:$sec";
  open  FILE,">>crontest.dat";
  print FILE "$s\\n";
  close FILE;

Результат аналогичный :(
Название: Определить место положения файла
Отправлено: NeoNox от 28 Июля 2004, 17:42:06
open FILE,">>", "./crontest.dat" or die "Can\'t open file: $!";

perldoc Cwd
Название: Определить место положения файла
Отправлено: Billi от 28 Июля 2004, 18:10:26
open FILE,">>./crontest.dat";
тоже работать не захотел :(
написал поный путь как в crontab заработало вроде.

Cwd тоже проблема он на серваке не стоит и установить врятли
есть возможность, я обычно втаких слочаях кидал модули в папку со скрыптом, но тут по всей видимости этот фокус непройдет (папка не известна).
Название: Определить место положения файла
Отправлено: Alone от 28 Июля 2004, 18:13:45
попробуй в начале скрипта поставить:
$0 =~ m|(.*)/[^/]+|;
chdir ($1) if ($1);
Название: Определить место положения файла
Отправлено: NeoNox от 28 Июля 2004, 18:18:53
Цитировать
Billi:
Cwd тоже проблема он на серваке не стоит и установить врятли

perl какой версии стоит?
perl -v
это стандартный модуль.
Название: Определить место положения файла
Отправлено: Billi от 28 Июля 2004, 18:22:47
Спасиб :)
$0
помогло, а то я уже совсем растраиватся стал, переменных окружения($ENV) тоже нет их повсе видимости Apache заполняет.
Название: Определить место положения файла
Отправлено: NeoNox от 28 Июля 2004, 18:24:28
Цитировать
Billi:
open FILE,">>./crontest.dat";

open FILE,">>", "./crontest.dat" or die "Can\'t open file: $!";
Название: Определить место положения файла
Отправлено: Billi от 28 Июля 2004, 18:25:30
Module: Perl      Version: 5.00503
Насколько я понимаю очень старый
Название: Определить место положения файла
Отправлено: NeoNox от 28 Июля 2004, 18:34:46
на будующее:
кусок or die "$!" выведет тебе причину по которой то или иное действие не могло произойти (в данном случае открытие файла).
Название: Определить место положения файла
Отправлено: Billi от 28 Июля 2004, 18:48:52
про or die я в курсе, но логов но серваке тоже нет :)

open FILE,">>", "./crontest.dat" or die "Can\'t open file: $!";
тоже не работает

после этого
............
opendir (DIR, \'.\');
@files = readdir(DIR);
closedir(DIR);
print FILE @files;
.........
оказалась что директория \'.\' на момент  запуска являлась корневой директорией моего виртуального сервера.

От чего это может зависеть (какая директория является текущей в случая запуска из под cron)?
Название: Определить место положения файла
Отправлено: NeoNox от 28 Июля 2004, 19:07:26
корневая.
сделай сначала cd /path/to/your/folder; perl ./runmyfile.pl
Название: Определить место положения файла
Отправлено: Billi от 28 Июля 2004, 19:47:09
ok Спасиб