Forum Webscript.Ru
Программирование => Perl => Тема начата: Dimchik от 04 Декабря 2003, 02:41:15
-
Пожалуйста, помогите написать такой файл на PERLе, чтобы запрашивалось IMYA_KATALOGA, и после ввода имени и нажатия SUBMIT на сервере появлялся каталог с этим именем в папке C:/VAR/HOME/, и еще, чтобы одновременно с появлением папки IMYA_KATALOGA, в нее автоматически скопировалась группа файлов INDEX.HTML, ABOUT.HTM, INTRO.JPG, PHOTO.JPG, допустим из C:/VAR/HOME/SHABLON/.
т.е. мне нужно сделать такую системку создания аккаунтов с рабочего места администратора, чтобы на сервере появлялся сайт (HTTP://MY.SERVER.RU/WWW.IMYA_KATALOGA/), а в нем, как по шаблону, уже лежали несколько файлов, которые пользователь потом сможет отредактировать по своему усмотрению.
Еще хотелось бы проверку: если папка с именем IMYA_KATALOGA уже существует, предложить ввести другое имя, и так в цикле, пока не будет найдено свободное имя.
Очень надеюсь на участников этого форума.
Я новичок в программировании, и мне трудно с постановкой задачи, но возможно кто-то поймет и поможет. Заранее благодарен.
-
Dimchik
Я вижу только один "способ" решения твоей задачи. Ты пробуешь что нибудь написать, мы помогаем, советуем, вместе решаем проблемы.
Если постараешься - мы вместе решим задачу, но делать все за тебя врядли найдутся желающие, т.к. для заказа скрипта здесь есть отдельный форум.
-
В догонку:
C:/VAR/HOME/SHABLON/
Я сначала подумал, что это виндовс у тебя, но сейчас сомневаюсь. Дело в том, что ежели ты сидишь под *nix, то есть возможность создать "скелет" (каталог тут "/etc/skel", описание в инете), где всё, тобою запрошенное будет работать.
-
У меня XLinux. Ладно, я все понял ;) Постараюсь че-нить накарябать сам, а если будет глючить, попрошу совета. thnx!
А что за скелет? (/etc/skel) где? Мона посмотреть?
-
Dimchik:
А что за скелет
Яндекс рулит, я проверял.
http://www.yandex.ru/yandsearch?text=/etc/skel
-
мдя... я че-то первый раз такое вижу. Плохо быть чайником.
А если все же попробовать запрограммировать? Например, мне нужно создать каталог (пусть просто на C:/), с именем, как у введенной переменной LOGIN. Какую команду надо использовать в pl? Помогите plzzz...
Содержимое NEWSITE.HTM
Содержимое NEWSITE.PL
#!/usr/bin/perl
read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s///g;
$input{$name} = $value;
}
print "Content-Type: text/html\\n\\n";
print "Поздравляем, на диске создана папка с имнем $input{\'LOGIN\'}";
print "\\n";
-
$dir = "C:/".$input{\'LOGIN\'};
mkdir $dir, 0777;
И начинаем читать книжки... или учимся искать в них...
-
Phoinix, СПАСИБО!!!
А мне можно будет еще спрашивать или всё, тему закроют?
[OFF]З.Ы. Какую книгу посоветуете купить? (назв./автор)[/OFF]
-
И мне опять нужен маленький совет: напишите, пожалуйста, как скопировать файл "C:/IMAGES/GIRL.PNG" в "$dir"
-
perldoc File::Copy
-
Chs, это какой-то модуль? Если да, то я могу достать всеь дистрибутив, но как он называется (сам модульный файл для этого случая)?
И как записать функцию копирования для моего примера (Сообщение № 95738)?
[OFF]Простите, что задаю так много вопросов. Мне очень стыдно, но больше негде искать поддержки. It\'s a pity, у нас в политехе Перлу не учат :([/OFF]
-
Dimchik, почитай http://faq.webscript.ru/PerlFAQ
-
Чтение фаQа пока не принесло ощутимых результатов...
Ошибка за ошибкой...
Люди, я уж ActivePerl поставил, и вот прошу только маленький кусочек, неужели никто не умеет???
Как скопировать файл "C:/IMAGES/GIRL.PNG" в "$dir" ?
Что нужно писать в заголовке use?
perldoc File::Copy - т.е. сначала файл потом путь потом команда или как???
надежда умирает последней
-
#!/usr/bin/perl
use File::Copy;
my $sourcedir = "C:/1";
........
copy("$sourcedir","$dir");
можно ли таким образом скопировать все файлы из каталога C:/1/ в $dir?
-
Dimchik
Может стоит один раз попробовать? Или религия не позволяет?
-
Так дело в том, что нифига не копируются... или вы о чём-то другом ;)
-
Dimchik
Временно вместо "copy("$sourcedir","$dir");"
1: print "$sourcedir\\n$dir\\n"; # И смотри, что не так с путями,
2: print `cp $sourcedir $dir`; # Если скопируется, то возможно File::Copy ничего не знает про твою файловую систему (врядли конечно, но мало ли).
ps: обязательно "use warnings;" и смотри, что в логи пишется
-
ondr 2. сразу нарвешся на cp: omitting directory
man cp -> cp -R $source $destination
-
Dimchik
В догонку:
До меня только, что дошло - ты пытаешся директорию скопировать! :) File::Copy копирует только файлы! Рекурсию придется самому делать. Можно воспользоваться File::Find
По случаю праздника держи чем я пользуюсь.
http://www.andrey.kaliningrad.fio.ru/ExtCM.pm
http://www.andrey.kaliningrad.fio.ru/Util.pm
Размести в каталоге STD и поправь @INC(если надо)
Синтаксис
use STD::ExtCM;
my $src = "/src/dir";
my $dest = "/dest/dir";
my $type = 1; (1 - без замещения, 2 - с замещением, 3 - с расчищением), по умолчанию 1
ExtCp($src, $dest, $type) && print \'Cool !\'; (ExtMv - перемещение)
ps: Данный модуль автоматом определяет файл это либо директория, нужна ли рекурсия либо нет. Только нужно в директории назначения обязательно(!) использовать путь вместе желаемым названием директории(файла) !!!.
-
NeoNox
Гы :) Уже увидел.
-
Dimchik
Упс. Чуть не забыл. Перед использованием желательно употребить "umask 0";
-
Прошу прощения, только сейчас появился доступ в инэт. Ого-го сколько сразу :) Искренне спасибо вам, ondr и NeoNox. Сейчас все это дело переварю и напишу что получилось. Оказывается, мир не без добрых и щедрых людей.
--
С прошедшим праздником!