Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Как сделать корректный скрипт? |
Автор: Gooos 21.5.2006, 01:14 |
Скрипт состоит из двух файлов admin.pl и comments.pl, оба они работают с папкой /data, где находятся текстовые файлы с комментариями. Как правильно написать скрипт счётчика строк в .txt файле (counter.pl), что-бы он не конфликтовал с уже существующими скриптами admin.pl и comments.pl При этом скрипт по вызову должен посчитать строки в определённом .txt файле и вывести результат на страницу через SSI. Конечный результат работы скрипта должен быть такой: [ комментариев 15 ] Есть вот такой скрипт: #!/usr/bin/perl open(FILE, "file.txt"); @DATA=<FILE>; close (FILE); $count = @DATA; print "$count"; Как написать строку открытия файла, если имена запрошенных файлов будут различны - open(FILE, "$file.txt"); ??? Можно ли разместить скрипт прямо с txt. файлами в папке /data, что-бы не прописывать 'opendir' - открытие /data? И как правильно вызвать скрипт через SSI? <!--#include virtual="/cgi-bin/comment/data/counter.pl?file=faile_name"--> -??? P.S: я не програмист ![]() |
Автор: DiverD 21.5.2006, 10:20 |
Как написать строку открытия файла, если имена запрошенных файлов будут различны - загнать в цикл foreach и поочередно открывать. @list_file = qw(/usr/www/1.txt /usr/www/2.txt); foreach(@list_file) { open(FILE,"$_") or die "$!"; .... } Можно ли разместить скрипт прямо с txt. файлами в папке /data, что-бы не прописывать 'opendir' - открытие /data? можна итак, но не обязатьлено opendir, проста можна прописать пути к файлам если у тебя они не меняються. |
Автор: Gooos 21.5.2006, 15:18 |
diverd, я несовсем точно описал суть проблемы. Через ssi надо вызвать скрипт, что-бы он посчитал кол-во строк в одном определённом .txt файле и вывел результат на страницу. Будет несколько вызовов с одной страницы, но к разным .txt (т.е. кол-во комментариев к разным статьям - заголовок статьи и кол-во комм., заголовок статьи_2 и кол-во комм. к ней, и т.д.) #!/usr/bin/perl use strict; use warnings; my $filename = "$id.txt"; open(FILE, "<", "/pub/home/allegro7/cgi-bin/comment/data/" . $filename) or die "Could't open file $filename. $!"; my @data = <FILE>; close(FILE); print scalar(@data); Такой вариант будет работать? И как правильно вызвать через ssi, может в скрипте надо чего указать? Я вызывал так <!--#include virtual="/cgi-bin/comment/counter.pl?id=conv_smile"--> ... Вот результат на странице: [an error occurred while processing this directive] Запись в файле log_error: [Sun May 21 15:06:08 2006] [error] [client 84.17.27.189] Premature end of script headers: /pub/home/allegro7/cgi-bin/comment/counter.pl [Sun May 21 15:06:08 2006] [error] [client 84.17.27.189] unable to include "/cgi-bin/comment/counter.pl?id=conv_smile" in parsed file /pub/home/allegro7/htdocs/index_test.html ![]() |
Автор: nitr 21.5.2006, 19:29 |
open(FILE, "<". " но лучше по-другому ;) open(FILE, "< /pub/home/allegro7/cgi-bin/comment/data/$filename") |