Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Совместный проект 
:(
    Опции темы
nitr
Дата 22.3.2006, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Думаю стоит оставить, очень впечатляет smile Я серьёзно. Люди будут заходить не ради дизайна, ведь так? smile Навигация и читабельность - вот это важно. В версии korob2001, что-то притягательное есть ;), ничего не отвлекает и приятно смотреть.


--------------------
PM   Вверх
sharq
Дата 23.3.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Цитата(nitr @ 22.3.2006, 22:28 Найти цитируемый пост)
ничего не отвлекает и приятно смотреть.

мне единственное не нравится лого, точнее его текст, зачеркнутая а напрягает, просто perl должно быть.
Плюс шар заменить на верблюда (стандартного)
И еще favicon.ico можно взять как здесь.

А так прикольно. smile

Молодец, Денис!

Второй вариант мне больше нравится и внизу картинки - ссылки на разделы сделать в стиле ActiveState, а не фотками настоящих животных.

Кстати, где фотку Ларри нарыл? smile

smile

Это сообщение отредактировал(а) sharq - 23.3.2006, 11:19


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
korob2001
Дата 23.3.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата(sharq @ 23.3.2006, 08:10 Найти цитируемый пост)
мне единственное не нравится лого, точнее его текст, зачеркнутая а напрягает, просто perl должно быть.
Плюс шар заменить на верблюда (стандартного)

Perl изначально назывался Pearl (жемчуг), затем его переименовали, так как был уже тогда язык с названием Pearl, он кстати уже умер.
Вот тот шар, который ты хочешь заменить на вербрюда, это и есть жемчуг, который к Perl имел отношение задолго до верблюда. Верблюд стал символом, когда в свет вышла книга "Programming Perl". Ты на ActiveState видел хоть одного верблюда?
Если убрать зачёркнутое, то как-то скучно получается. Это просто прикол такой, лень было исправлять, вот я и зачеркнул. smile
Цитата(sharq @ 23.3.2006, 08:10 Найти цитируемый пост)
Второй вариант мне больше нравится и внизу картинки - ссылки на разделы сделать в стиле ActiveState, а не фотками настоящих животных.

Мне тоже второй больше нравится. Внизу я же сделал, не картинки, картинка появляется если наводишь мышью.
Цитата(sharq @ 23.3.2006, 08:10 Найти цитируемый пост)
Кстати, где фотку Ларри нарыл?

Через goole.com нашёл. Вообще честно говоря, мало чётких фоток с ним. smile

Это сообщение отредактировал(а) korob2001 - 23.3.2006, 13:25


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
DEER
Дата 23.3.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 1
Всего: 13



ну что народ...
дизайн то нормальный, если потом кто что придумает всегда поправить можно..
надо начинать функционал накручивать на него!!!
готов к работе, только скажите что делать smile


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
korob2001
Дата 23.3.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Графику немного оптимизировал и кое что подправил.

До изменения оба варианта:
http://antonium.org/dsn/title.html
http://antonium.org/dsn/title2.html

После:
http://antonium.org/dsn/title3.html
http://antonium.org/dsn/title4.html

Завтра еду в Брюссель по делам, возьму с собой комп, нарисую ещё дизай для маленьких, открывающихся, окон. Может ещё чего-нить в голову придёт.

Кстати, где будем хранить дизайн? Разбивать на отдельные файлы или прямо внутри кода?


Это сообщение отредактировал(а) korob2001 - 23.3.2006, 14:30


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
nitr
Дата 23.3.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



=) ну не знаю, на первый вариант (на всю страницу) на верхний угол можно подменю чтоль... ну раз большинство второй вариант... Мне почему не нравится, разрешение от 1280х1024... узко smile Вон кста, тока щас заметил smile форум на всю страницу ;)


--------------------
PM   Вверх
sharq
Дата 23.3.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



korob2001,
Цитата(korob2001 @ 23.3.2006, 14:22 Найти цитируемый пост)
Perl изначально назывался Pearl (жемчуг), затем его переименовали, так как был уже тогда язык с названием Pearl, он кстати уже умер.

Это я знаю, но зачеркнутае буква отвлекает, imho.


Цитата(korob2001 @ 23.3.2006, 15:26 Найти цитируемый пост)
Кстати, где будем хранить дизайн? Разбивать на отдельные файлы или прямо внутри кода?

я считаю должны быть в отдельных файлах, в скриптах только perl-код!

А вот смешная фото Ларри smile

smile

Это сообщение отредактировал(а) sharq - 23.3.2006, 15:40


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
korob2001
Дата 23.3.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата(sharq @ 23.3.2006, 12:16 Найти цитируемый пост)

я считаю должны быть в отдельных файлах, в скриптах только perl-код!

А если нужно где-то динамически выводить какую-нить инфу, не будем же дробить его на молекулы? Или будем на шаблонах писать например: HTML::Template?
Просто уже можно начать это делать. А что бы начать, нужно определиться. ;))))


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
korob2001
Дата 25.3.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Написал бегущую строку, вот с ней вариант:
http://antonium.org/dsn/title5.html


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Kiber_rat
Дата 31.3.2006, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



Пару комментов к тому дизайну который я увидел на данный момент... Неправильно отображается русский язык (в Опере по крайней мере), вероятно что-то с тегом <META> не то... Второе, я бы малость поменьше сделал область с лого сайта, поскольку отъедается слишком уж большая часть полезной площади.
С удовольствием приму участие в работе, не обещаю что смогу много времени уделить, но буду стараться в свободное время, идея создать свой CSV мне нравится. Могу кой чего предложить по поводу шаблонов. В своей работе мы используем свой модуль для работы с шаблонами. Идея, как обычно, в простом использовании встроенного в HTML код perl кода. ДЛя этого мы просто напросто используем "кракозябры", т.е. последовательность символов которая с наименьшей вероятностью может встретиться в обычном контенте. Например, код perl включается внутри таких ограничителей <!--& print "Here perl code smile\n" --> Итого, выполняем в eval-е полученный шаблон, предварительно убрав "кракозябры" и добавив print() вокруг обычного HTML. Это сильно упрощенная схема, но идея надеюсь понятна. Для апача все просто, если наш основной скрипт, выполняющий обработку шаблонов, называется. к примеру, run.cgi, то просто добавляем в корень сайта, в файл .htaccess следующие строчки:
Код
Options +ExecCGI
Action icgi /run.cgi
AddHandler icgi .html
и все html-ки сперва проходят через наш скрипт а потом уже, с подставленными результатами выполенния кода, отдаются апачу, соотвественно нет кода, отдается просто HTML а если есть, выполняем, получаем на выходе все тот же HTML, Решение проверенно временем и за лет 5 себя оправдало.
Добавлено @ 05:11
В догонку... Вот наваял тут малость для примера... Добавил @~$var~@ такую кракозябру для просто го вывода переменной которая в ней и малость расширил пример...
run.cgi
Код
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
my %Q = CGI::Vars();

show($ENV{PATH_TRANSLATED});

sub show {
    my $path;
    $_[0]=~m!^/! ? ($path=$_[0]) : ($path =~ s{[^/]*$}{$_[0]});
    die "Can't open '$path': $!" unless defined(local $_ = Cat($path));
    my $e = '';
    while ( 1 ) {
            /\G<!--&(.*?)\s*;?\s*-->/gcs    && do {
            $e.="$1;";
        }
        ||  /\G@~(.*?)~@/gcs                 && do {
            $e .= "print $1;";
        }       
        ||  /\G(.*?)(?=<!--&|@~|\n|$)(\n?)/gcsm && do {
            $e .= "print \"\Q$1\E" . ($2 ? '\n' : '') . "\";$2";
        }
                                
        || last;
    }
    print header();
    eval $e;
    exit();
}

sub Cat {
    open FH, $_[0] or die "Can't open '$_[0]', $!";
    return join '',(<FH>);
}

try1.html
Код
<!--& 
my $msg = "Wow! we have variable!" if $Q{var};
-->
<HTML>
<HEAD>
<TITLE>Test page</TITLE>
</HEAD>
<BODY>
Simple HTML here...<br>
<b><!--& print "Hi from perl code! :)<br>\n" for (1..3);  --></b>
<!--& if ($msg) { -->
@~$msg~@:&nbsp;<font color="red">var = @~$Q{var}~@</font>
<!--& } --> 
<hr width="75%">
<table width="75%" align="center" border="1">
<tr>    
<th>Variable</th>
<th>Value</th> 
</tr>   
<!--& for (sort keys %ENV) { 
        $ENV{$_} = '&nbsp;' if $ENV{$_} eq '';
-->     
<tr><td align="right">@~$_~@</td><td align="right">@~$ENV{$_}~@</td></tr>
<!--& } -->
</table>
</BODY>
</HTML>

.htaccess
Код
Options +ExecCGI +FollowSymLinks +Includes
Action templ /run.cgi
AddHandler templ .htm


Это сообщение отредактировал(а) Kiber_rat - 31.3.2006, 05:40


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
korob2001
Дата 31.3.2006, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

Неправильно отображается русский язык (в Опере по крайней мере), вероятно что-то с тегом <META> не то...

Подправил, вставил мета тэг:

http://antonium.org/dsn/title5.html

Цитата

Второе, я бы малость поменьше сделал область с лого сайта, поскольку отъедается слишком уж большая часть полезной площади.

Таблица сделана так, что бы можно было в шапку ещё что-нить вставить, например над заголовком, а так же под ним. Место, которое занимает шапка, ещё будем использовать.

ЗЫ: Пробовал реальзовать бегущую строку через ActiveXObject, в IE и XMLHttpRequest, в остальных браузерах, но что-то глючно она работает. ;((((( В ссылке выше, строки хранятся в массиве. В следующей ссылке они берутся из текстового файла, на сервере. Вот ссылка:

http://antonium.org/dsn/title6.html

В последнем примере глюк в том, что строка повторяется и я не могу ничего с этим поделать. ;(((( Если кто знаком с js, то посмотрите, вот скрипт:
Код

var request = null;
var newString = "";
var element = null;
var obj = null;

function loadXMLDoc(url) {
    request = null;
    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
        request.onreadystatechange = processReqChange;
        request.open("GET", url, true);
        request.send(null);
    } else if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
        if (request) {
            request.onreadystatechange = processReqChange;
            request.open("GET", url, true);
            request.send();
        }
    }
}

function processReqChange() {    
    if (request.readyState == 4) {
    if (request.status == 200) {
            newString = request.responseText;
        } else {
            newString = "Добро пожаловать на сайт Perl Anatomy: " + request.statusText + "[+]0";
        }
    }  
}

function getNextString(url, oldString) { loadXMLDoc(url + "?old=" + oldString) };

function moveString(str, speed, id, step, size) {
    this.str = str;
    this.speed = speed || 100;
    this.element = (typeof(id) == "string") ? document.getElementById(id) : id;
    this.step = step || 1;
    this.pos = 0;
    this.len = str.length;
}

function startMove() {
    obj.element.innerHTML = "";
    var nextChar = obj.str.charAt(obj.pos);
    if (nextChar == "<") {
        var buf = nextChar;
        while (true) {
            if ((obj.step + obj.pos) > obj.len) break;
            nextChar = obj.str.charAt(++obj.pos);
            buf += nextChar;
            if ( nextChar == ">" ) {
                obj.element.innerHTML += buf;
                obj.pos++;
                break;
            }
        }
    }
    obj.element.innerHTML = obj.str.substr(0, obj.pos + 1);
    if ((obj.pos + obj.step) <= obj.len) {
        obj.pos++;
    } else {
        return;
    }
    setTimeout("startMove()", obj.speed);
}

function runString(x, speed, id, step, delay) {
    getNextString('/cgi-bin/runtext/getnext.pl', x) || "";
    var arr = new Array(2);
    arr = newString.split('[+]',2);
    obj = new moveString( arr[0], speed, id, step, arr[0].length );
    startMove();
    delete obj;
    ++arr[1];
    setTimeout("runString(" + arr[1] + "," + speed + ",'" + [id] + "'," + step + "," + delay + ")", delay);
}

Вот код файла getnext.pl :
Код

#!/usr/bin/perl -T
use lib qw(.);
use Black::CGI;

my $file = "messages.txt";

my $num = clear_info(Black::CGI->new(get_max_length => 12)->get->{'old'}, qr/^\d+$/);
$num = 0 if is_tnt($num);


my $message = "Добро пожаловать на сайт <b>Perl Anatomy</b>";

if (-e $file) {
     open(MESS, "< $file") or die "Can't open file '$file': $!\n";
          chomp( my @messages = <MESS> );
     close(MESS);
     $num = 0 if $num > $#messages;
     $message = $messages[$num];
     #$num++;
}

print "Content-type: text/plain; charset=windows-1251\n\n";
print "${message}[+]$num";

sub is_tnt {
    my $var = shift;
    return !eval { $var++, kill 0; 1; };
}

sub clear_info {
    my( $var, $pat ) = @_;
    if ( $var =~ /($pat)/ ) {
         $var = $1;
         return $var;
    } else {
         return $var;
    }
}



--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
DEER
Дата 31.3.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 1
Всего: 13



korob2001, в функции runString по моему косяк
Код
function runString(x, speed, id, step, delay) {    
    getNextString('/cgi-bin/runtext/getnext.pl', x) || "";    
    var arr = new Array(2);    
    arr = newString.split('[+]',2);    
    obj = new moveString( arr[0], speed, id, step, arr[0].length );    
    startMove();    
    delete obj;    
    ++arr[1];    
    setTimeout("runString(" + arr[1] + "," + speed + ",'" + [id] + "'," + step + "," + delay + ")", delay);    
}

что то не врубил как у тебя происходит инкремент номера записи. те ты каждый раз создаешь в массиве arr одинаковый элемент и вызываешь runString с одним и тем же значением arr[1]



--------------------
 
PM MAIL WWW ICQ MSN   Вверх
Kiber_rat
Дата 31.3.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



korob2001, так что насчет моего предложения по "встроенному" perl? smile


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
korob2001
Дата 31.3.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата(DEER @ 31.3.2006, 10:39 Найти цитируемый пост)
что то не врубил как у тебя происходит инкремент номера записи. те ты каждый раз создаешь в массиве arr одинаковый элемент и вызываешь runString с одним и тем же значением arr[1]

Допустим мы запускаем данный код по событию onLoad таким образом:
Код

<body onload="runString(0, 10, 'str', 1, 5000)">
<div id="str">&nbsp;</div>

Где:
0 - стартовое сообщение, т.е. первая строка из файла messages.txt
10 - значение в миллисекундах ( скорость вывода строки ).
'str' - id элемента документа, где должна выводиться страница (в данном случае это id div'a)
1 - сколько символов должно выводиться за 1 шаг, т.е. за 10 миллисекунд.
5000 - период задержки перед каждым обращением к серверу (в миллисекундах)

Т.е. мы стартуем с нулевой строки, т.е. с первого сообщения. В этой строке скрипт посылает запрос серверу:
Код

getNextString('/cgi-bin/runtext/getnext.pl', x) || "";

Сервер возвращает стрку вида: "Сообщение[+]номер"
Она разбивается по символу разделителю: [+] и сохраняется в массив в следующих строках:
Код

var arr = new Array(2);
arr = newString.split('[+]',2);

newString - это глобальная переменная.

Затем создаём объект:
Код

obj = new moveString( arr[0], speed, id, step, arr[0].length );

obj - так же глобальная переменная

Запускаем строку, следующая функция использует данные которые хранятся в объекте obj
Код

startMove();


Уничтожаем объект:
Код

delete obj;

Вот здесь инкрементируем счётчик, т.е. увеличиваем номер полученной строки на единицу:
Код

++arr[1];

Создаём timeout, передаём уже увеличенный номер сообщения, arr[1].
Код

setTimeout("runString(" + arr[1] + "," + speed + ",'" + [id] + "'," + step + "," + delay + ")", delay);

Вобщем за инкремент переменной с номером сообщения, отвечает эта строка: ++arr[1]. Perl лишь получает номер следующей записи и проверяет, что бы он не был больше, чем всего записей в файле. Если он больше, то обнуляет его.
Цитата(Kiber_rat @ 31.3.2006, 11:58 Найти цитируемый пост)
korob2001, так что насчет моего предложения по "встроенному" perl?

Я пока не совсем понял выгоду с этого, но попробовать можно. Просто хотелось бы, что бы не приходилось каждый раз писать один и тот же код HTML для каждой страницы. Я раньше всегда писал класс, где кадый метод это какая-то часть страницы. Например:
Код

package Design;

# Конструктор и прочее

sub printTop {
    my $self = shift;
    # здесь получаем остальные параметры
    open(TOP, "< top.txt") or die $!;
    print while <TOP>; # здесь можно парсить каждую строку перед выводом
    close(TOP);
}

sub printBottom {
    my self = shift;
    # здесь получаем остальные параметры
    open(BOT, "< bot.txt") or die $!;
    print while <BOT>; # здесь можно парсить каждую строку перед выводом
    close(BOT);
}

После чего юзал так:
Код

use Design;
my $ds = Design->new( #параметры );
$ds->printTop( #параметры );

# Здесь пишу код индивидуальный для каждой страницы

$ds->printBottom();

Можно и внутри класса код хранить, его всё равно видеть никто не будет, только этот классс будет отвечать за дизайн. В него же можно добавить методы, которые будут создавать различные обёртки, для сообщений, ссылок, заголовков и прочего. Вобщем нужно пробовать. smile
Попробуй напиши для этой страницы:
http://antonium.org/dsn/title5.html
потом выложим его. Я попробую своим способом, потом глянем какой вариант удобнее, его и будем использовать. После чего уже можно будет расределить задания, по участникам. Ещё, так же было бы не плохо, что бы в каждой программе был ключь -T.
Код

# Подпрограмма проверяет загрязнена ли переменная, которая была
# ей получена. Если да вернёт - 1, если нет - 0
sub is_tnt {
    my $var = shift;
    return !eval { $var++, kill 0; 1; };
}

# Подпрограмма получает 2 параметра переменную и шаблон, сравнивает переменную
# с шаблоном и если шаблон совпал, то вернёт очищенную переменную, если нет то
# грязную 
sub clear_info {
    my( $var, $pat ) = @_;
    if ( $var =~ /($pat)/ ) {
         $var = $1;
         return $var;
    } else {
         return $var;
    }
}

Допустим я получил параметр, в котором должна быть строка из символов латинского алфавита и ничего кроме них:
Код

my $str = param('str');
# Пытаемся очистить
$str = clear_info($str, qr/^[a-zA-Z]+$/);

# Если переменная ещё загрязнена, выдаём сообщение
if ( is_tnt( $str ) ) {
     print "Получен не верный параметр\n";
} else {
    # Если оказались тута, переменная была успешно очищена
}

Подробнее об очистке можно почитать в FAQ, это касается новичков. Скорее всего, добавим эти методы в какой-нить класс или модуль, что бы не повторять их в каждой программе.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
nitr
Дата 31.3.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Лично я использую этот метод
Цитата

Я раньше всегда писал класс, где кадый метод это какая-то часть страницы...
Код

package Design;
# Конструктор и прочее
sub printTop {
    my $self = shift;
    # здесь получаем остальные параметры
    open(TOP, "< top.txt") or die $!;
    print while <TOP>; # здесь можно парсить каждую строку перед выводом
    close(TOP);
}
sub printBottom {
    my self = shift;
    # здесь получаем остальные параметры
    open(BOT, "< bot.txt") or die $!;
    print while <BOT>; # здесь можно парсить каждую строку перед выводом
    close(BOT);
}
....


Очень удобно... smile

заголовок <tablr><tr><td> здесь весь контент меняю, хоть из файлов или ещё как угодно </td></tr></table> концовка

Так что я за такой метод, по-моему очень удобно.

Это сообщение отредактировал(а) nitr - 31.3.2006, 22:06


--------------------
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1387 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.