Forum Webscript.Ru

Программирование => Perl => Тема начата: от 31 Декабря 2001, 13:29:42

Название: как мне преименовать файл вместе с его расширением?
Отправлено: от 31 Декабря 2001, 13:29:42
как мне преименовать файл вместе с его расширением?
знаю что вопрос туповат но все же...
есть у меня файл $count.html а мне надо его в конце перлятника соответственно открыть наверно считать и переименовать в $count.shtml ....
Название: гы-гы
Отправлено: Green Kakadu от 31 Декабря 2001, 15:16:27
rename("count.html", "count.shtml") or die("Can not rename file");
Название: ничего не переименовывается
Отправлено: от 01 Января 2002, 18:17:03
ничего не переименовывается... хоть бы что.. никакой реакции и ошибку тоже не выдает..
Название: а так:
Отправлено: Green Kakadu от 01 Января 2002, 18:37:26
rename("count.html", "count.shtml") or print "Content-type: text/html\\n\\n Can not rename file, reason $!";

Скрипт должен быть в той же папке, что и count.html, если это не так, то в имени файла надо писать и путь к файлу.
Название: как мне преименовать файл вместе с его расширением?
Отправлено: Tankist от 03 Января 2002, 22:30:43
Цитировать
rename("count.html", "count.shtml") or print "Content-type: text/html\\n\\n Can not rename file, reason $!";


Так тоже не верно:)Если переименуется, то сервер 500 выдаст, надо так:
print "Content-type: text/html\\n\\n";
rename("count.html", "count.shtml") or die("Не смог переименовать файл, причины: $!");
Название: ага
Отправлено: Green Kakadu от 04 Января 2002, 01:24:10
Цитировать
Так тоже не верноЕсли переименуется, то сервер 500 выдаст, надо так:

;) ага, ваша правда, только die в любом случае выведет это не в броузер, как того хочет чел-к.
А чтоб в броузер, то правильно написать так:
unless(rename("count.html", "count.shtml")){
   print "Content-type: text/html\\n\\n Error: $!";
}   

во, теперь окей.
забавно, что не обрабатывалась
rename("count.html", "count.shtml") or print "Content-type: text/html\\n\\n Can not rename file, reason $!";

интересно почему?  наверное по тем же причинам, что и конструкция вида:
$i++ or print "Пусто, чувак!";
(а вот: ++$i or print "Привет!"; пройдет нормально)

Т.к. операция $i++ (в отличии от ++$i) происходит после действия, т.е. вначале проверили на истинность, а потом автоинкремент, и с ренеймом: вначале на истинность, а потом ренейм :) вот она perl философия!