Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: Полезные решения

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9

Открыть новую тему     Написать ответ в эту тему

Anton_Y



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Итак.. Предлагаю создать на форуме топик где будут размещатся различные решения различных задач (типа библиотека функций).
Размещать рекомендуется с описанием (что этот код делае), с описанием переменных (желательно use strict)
p.s. размещать не обязательно свои исходники..  
мой скомный вклад.. (что сумел вспомнить:) )
 
  • исключение из массива повторяющихся записей (аналог distinct в sql) Подробнее...
  •  рекурсивный обход папок Подробнее...
  • Исключение из массива данных встречающихся в другом массиве Подробнее...
  • Perl: Перекодировка кириллического текста (win/koi/iso/utf)
  • Приведение регистра текста к нормально виду Подробнее...
  • Замена строки (выражения) в большом количестве файлов на другое Подробнее...
     
     
     
    p.s. для профи конечно это капля в море, но для новичков своеобразный faq. И предлагаю эту тему приклеить, чтобы она всегда была вверху..
    p.p.s. и постите свои фишки сюда..  

    Никаких вопросов! Только решения!

     
    Perl Cookbook on-line http://pleac.sourceforge.net/pleac_perl/index.html  
    DevShed Perl Articles http://www.devshed.com/c/a/Perl/

  • Всего записей: 581 | Зарегистр. 04-09-2002 | Отправлено: 07:12 14-07-2004 | Исправлено: Cheery, 23:38 01-03-2008
    baraka



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Shurik
    PerlCookbook
    4.6. Extracting Unique Elements from a List
    hzzp://iis1.cps.unizar.es/Oreilly/perl/cookbook/ch04_07.htm
    Если кто не слыщал про эту книгу то welcome сюда:
    hzzp://iis1.cps.unizar.es/Oreilly/perl/cookbook/index.htm

    Всего записей: 313 | Зарегистр. 29-01-2003 | Отправлено: 10:52 02-08-2004
    apatit



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всем привет!
     
    Есть вот такое чудо на свете http://pleac.sourceforge.net/
    Перловый раздел, соответственно, вот он http://pleac.sourceforge.net/pleac_perl/index.html
    То есть, это весь код примеров из Перл Кукбук. Правда, я полагаю, что это максимум 2-я редакция книги. По аналогии в этом проекте пытаются и для других языков сделать такой же сборник рецептов.

    ----------
    http://www.murman.ws/ - Нет очередям в налоговой и на почте! Сэкономим бумагу.

    Всего записей: 1169 | Зарегистр. 09-10-2001 | Отправлено: 10:11 03-08-2004
    baraka



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Полезные Perl модули
    hzzp://opennet.ru/prog/sml/95.shtml

    Всего записей: 313 | Зарегистр. 29-01-2003 | Отправлено: 19:18 08-08-2004
    PolyGon

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Извиняюсь, а тема еще жива? Или энтузиазм иссяк?




    Замечание за флуд. — Svarga.

    Всего записей: 23 | Зарегистр. 05-02-2003 | Отправлено: 02:15 27-10-2004 | Исправлено: Svarga, 02:29 27-10-2004
    easyman



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ни чё не иссякло, достаем из ларца.....
     
     
    экономично разбираем конфиги в стиле ini, примерно следующего вида:
     

    Код:
     
    [bla]
    aaa=nnn
    bbb=bbb
     
    [view]
    fff=not
    ggg=333
     
     
    [tmpl]
    ttt=<<TMPL
    <p>
    [##ggg##]
     
    Любая разметка html, xml, etc.
    </p>
    TMPL>>
     
    eee=5
     
    [easy]
    er=9
     

     
    при помощи следующего класса
     

    Код:
     
    package Bla::Config;
     
    use strict;
     
    sub new
    {
        my $class = shift;
        my $this = bless {}, $class;
        return $this;
    }
     
    # возвращает ссылку на хэш
    sub loadConfig
    {
        my $this = shift;
        $this->{fconfig} = shift;
        open(FH, "<$this->{fconfig}") || $this->_setError("Config file not opened\n");
            $this->_checkError();
            flock(FH,2);
            my @config = <FH>;
        close(FH);
     
        my $cfg_hash = {};
     
        my ($section, $tmpl_section);
        my $tmpl_flag = 0;
        foreach my $item (@config)
        {
               if ($item =~ /^TMPL\>\>/) # проверяем окончание шаблона
               {
                        $tmpl_flag = 0;
                        next;
               }
               if ($tmpl_flag == 1) # добавляем строку в сущность если это шаблон
               {
                       $cfg_hash->{$section}->{$tmpl_section} .= $item;
                       next;
               }
               next if $item =~ /^[\n|#]/;
               $item =~ s/\n+//g;
               if ($item =~ /^\[(.*)\]$/)
               {
                      $cfg_hash->{$1} = {};
                      $section = $1;
               }
               elsif ($item =~ /([^\=]+)\=\<\<TMPL/) # проверяем начало шаблона
               {
                      $tmpl_section = $1;
                      $cfg_hash->{$section}->{$tmpl_section} = "";
                      $tmpl_flag = 1;
               }
               else
               {
                     my ($key,$value) = $item =~ /([^\=]+)\=([^\=]+)/;
                     $cfg_hash->{$section}->{$key} = $value;
               }
        }
        return $cfg_hash;
    }
     
    sub _checkError
    {
        my $this = shift;
        if ($this->_getError()) { die $this->_getError(); }
        return $this;
    }
     
    sub _setError
    {
        my $this = shift;
        my $errorMessage = shift || "Unknown error";
        $this->{_error} = $errorMessage;
        return $this;
    }
     
    sub _getError
    {
        my $this = shift;
        return $this->{_error} if $this->{_error};
        return 0;
    }
     
    1;
     

     
    ну а используем так
     

    Код:
     
    require Bla::Config;
     
    my $fconfig = "/path/to/conf.conf";
    my $conf = Bla::Config->new()->loadConfig($fconfig);
     

     
    в результате в $conf получаем ссылку на хэш-структуру, с которой удобно в дальнейшем работать, нечто подобное:
     

    Код:
     
    HASH(0x80a3960)
    {
        bla => HASH(0x8067adc)
               {
                   aaa => nnn
                   bbb => bbb
               }
        easy => HASH(0x80a77f8)
                {
                    er => 9
                }
        tmpl => HASH(0x80a77c8)
                {
                    eee => 5
                    ttt => <p>
    [##ggg##]
    Любая разметка html, xml, etc.
    </p>
     
                }
        view => HASH(0x8067de8)
                {
                    fff => not
                    ggg => 333
                }
    }
     

    Всего записей: 483 | Зарегистр. 25-10-2002 | Отправлено: 20:08 30-10-2004 | Исправлено: easyman, 01:25 31-10-2004
    Audciz



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Кому интересно, ещё скрипты: hzzp://script.woweb.ru/index.htm/c/4

    Всего записей: 649 | Зарегистр. 13-02-2003 | Отправлено: 19:07 02-11-2004 | Исправлено: Audciz, 19:11 02-11-2004
    YourAdmin



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Товарищи! Активнее!
     
    Вывод шаблона с заменой переменных
     

    Код:
    print ShowTemplate("полный путь к файлу");
     
     
    sub ShowTemplate {
     
      my ($fname, $ErrMsg,$Handy) = @_;
      my ($tmp, $data);
      if ($handy=='1')
      { $tmp = $fname; }
      else
      { open (F,"$fname") or return "(not found [$fname])";
        $tmp=$/; undef $/; $data=<F>; $/=$tmp;
        close(F); }
     
    #А здесь начинаем менять переменные
     
     $data =~ s/\$a1/Привет/g;
     $data =~ s/\$a2/с/g;
     $data =~ s/\$a3/большого/g;
     $data =~ s/\$a4/бодуна/g;
     
     return $data;
    }  
     

     
     
     
    Форматирование даты
     

    Код:
    #В результате мы выведем Ч:М:С Д М(название) Г
    $time = time;
    $time = &longdate("$time");
     
    print $time;
     
     
     
    sub longdate {  
       my $time = shift;  
       (my $sec,my $min,my $hour,my $mday,my $mon,my $year,my $wday,my $yday,my $isdst) = localtime($time);  
       my @months = ('&#223;&#237;&#226;&#224;&#240;&#255;','&#212;&#229;&#226;&#240;&#224;&#235;&#255;','&#204;&#224;&#240;&#242;&#224;','&#192;&#239;&#240;&#229;&#235;&#255;','&#204;&#224;&#255;','&#200;&#254;&#237;&#255;','&#200;&#254;&#235;&#255;','&#192;&#226;&#227;&#243;&#241;&#242;&#224;','&#209;&#229;&#237;&#242;&#255;&#225;&#240;&#255;','&#206;&#234;&#242;&#255;&#225;&#240;&#255;','&#205;&#238;&#255;&#225;&#240;&#255;','&#196;&#229;&#234;&#224;&#225;&#240;&#255;');  
       $year = $year + 1900;  
       return "$hour:$min:$sec $mday $months[$mon] $year";  
       }  

    Всего записей: 156 | Зарегистр. 08-12-2001 | Отправлено: 02:31 03-11-2004 | Исправлено: YourAdmin, 21:33 05-11-2004
    CheRt



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Реализация всплывающих сообщений(тема с последним ответом становится первой в списке) для форума на файловой системе; данный учаток находится в функции сохранения ответа. В $_[0] передается номер темы(id файла):

    Код:
     
     subj_up($sid);
     
     sub subj_up {
      $subj_num=$_[0];
      #Открываем файл-список тем и кидаем содержимое в массив
      open(MN, "$head_file") or die "Cant open header file!";
       @header=<MN>;
      close(MN);
     
      #Перебираем полученный массив и если находим в нем соотв. тему,  
      #кидаем ее номер в переменную $tmp
      $num="subj=$subj_num";
      for ($i=0; $i<@header; $i++) {
       if ($header[$i]=~m/$num/i) {
        $tmp=$i;
       }
      }
     
      #Делаем блокировку по семафору(ф-ции lock и unlock думаю нет смысла приводить)
      #Открываем файл-список на запись, печатаем туда элемент массива с номером $tmp
      #По циклу кидаем все остальные элементы, не забыв пропустить $header[$tmp]
      #Закрываем файл и отлочиваем семафор - усе в порядке
      &lock;
       open(MN, ">$head_file");
        print MN $header[$tmp];
        for ($i=0; $i<@header; $i++) {
         if ($i!=$tmp) {
          print MN $header[$i];
         }
        }
      close(MN);
      &unlock;
     }
     

     
    пример записи из файла-списка тем:

    Код:
     
    CheRt<:>Особо тупая тема<:>/cgi-bin/forum/forum.pl?subj=17<:>u_chert-a@myla.net<:>03/04/2004
     


    ----------
    В огне бода нет и не будет!
    До встречи в СССР 2.0!

    Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 22:13 07-11-2004 | Исправлено: CheRt, 16:35 14-11-2004
    CheRt



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Делаем в форуме(чате) встроенные таги, покажу на примере тага смены цвета сообщения:

    Код:
     
     while ($body=~m/\[c\s*=\s*(#{0,1}[a-z0-9]{0,12})\s*\]/igc) {
      $setcolor=$1;
      $body=~s/\[c\s*=\s*(#{0,1}[a-z0-9]{0,12})\s*\]/<font color=\"$setcolor\">/i;
     }
     while ($body=~s/\[\/c\]/<\/font>/i) {}
     

    т.е. как думаю всем видно в переменной $body лежит текст сообщения, в нем допустим встречается следующий участок [c=#ff0000]текст[/c] в результате получим текст
    Простенько, а думаю кому-нибудь, да будет полезно
    ------------------------------------
    Чтобы не плодить сообщений флудовых, ответ Сварге тут:
    Там все в себя включает, просто может и правда разделить, как ты предложил - так логически понятнее становится:  
    \[\s?\s?=\s?(#?[a-f0-9]{0,6}|[a-zA-Z]+)\s?\]
    (+сразу ставим везде на пробелы "?", т.е. 0 или 1 пробел, т.к. желательно до обработки встроенных тагов сделать замену вида while ($body=~s/\s{2, }/ /) {} )

    Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 00:47 18-11-2004 | Исправлено: CheRt, 06:53 18-11-2004
    Svarga

    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CheRt

    Цитата:
    $body=~m/\[c\s*=\s*(#{0,1}[a-z0-9]{0,12})\s*\]/igc

    тогда лучше  
    (#?[a-f0-9]{0,6}|[a-zA-Z]+)
    Потому как цвета можно и словами указывать: black, aquamarine, azure и т.д.


    ----------
    away.

    Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:07 18-11-2004
    batva



    crazy administrator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CheRt

    Цитата:
    Реализация всплывающих сообщений(тема с последним ответом становится первой в списке) для форума на файловой системе; данный учаток находится в функции сохранения ответа. В $_[0] передается номер темы(id файла):  
     
    Код:  
     subj_up($sid);  
     
     sub subj_up {  
      $subj_num=$_[0];  
      #Открываем файл-список тем и кидаем содержимое в массив  
      open(MN, "$head_file") or die "Cant open header file!";  
       @header=<MN>;  
      close(MN);  
     
      #Перебираем полученный массив и если находим в нем соотв. тему,  
      #кидаем ее номер в переменную $tmp  
      $num="subj=$subj_num";  
      for ($i=0; $i<@header; $i++) {  
       if ($header[$i]=~m/$num/i) {  
        $tmp=$i;  
       }  
      }  
     
      #Делаем блокировку по семафору(ф-ции lock и unlock думаю нет смысла приводить)  
      #Открываем файл-список на запись, печатаем туда элемент массива с номером $tmp  
      #По циклу кидаем все остальные элементы, не забыв пропустить $header[$tmp]  
      #Закрываем файл и отлочиваем семафор - усе в порядке  
      &lock;  
       open(MN, ">$head_file");  
        print MN $header[$tmp];  
        for ($i=0; $i<@header; $i++) {  
         if ($i!=$tmp) {  
          print MN $header[$i];  
         }  
        }  
      close(MN);  
      &unlock;  
     }  
     

     
    Лишние тормоза.
     
     
    Почему бы после нахождения не выйти из первого цикла?
    Учитывая, что тем в форуме может быть много, и как правило, исходная строка где-то наверху (ибо ответы в основном идут в топики с первых страниц форума) выгрыш в скорости будет существенным.  
     

    Код:
    if ($header[$i]=~m/$num/i) {  
        $tmp=$i;  
        last;
    }  

     
    А второй цикл с if внутри вообще не нужен.
    Не лучше ли удалить элемент массива еще в первом цикле,  добавить его в начало и потом уже print
     
    Итого получаем такой код:
     

    Код:
     
      $num="subj=$subj_num";
      for ($i=0; $i<@header; $i++) {
       if ($header[$i]=~m/$num/i) {
       unshift @header,$header[$i];
       splice @header,$i+1,1;
       last;
       }
      }
     
      &lock;
       open(MN, ">$head_file");
       print MN @header;
       close(MN);
      &unlock;
     

     
     
     
    Что касается тегов, то
     

    Цитата:
    while ($body=~m/\[c\s*=\s*(#{0,1}[a-z0-9]{0,12})\s*\]/igc) {  
      $setcolor=$1;  
      $body=~s/\[c\s*=\s*(#{0,1}[a-z0-9]{0,12})\s*\]/<font color=\"$setcolor\">/i;  
     }  
     while ($body=~s/\[\/c\]/<\/font>/i) {}  

     
    Пример:

    Код:
     
    $body =~ s/(\[color=)([A-Za-z]+|[#\dA-F]+)\](.+?)(\[\/color])/<font color=\"$2\">$3<\/font>/isg; © Ru.Board
     

    Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 02:43 24-11-2004
    novij

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    может я и не заметил и это уже написано здесь, но подскажите плиз как мне осуществить перекодировку из utf-8 в win-1251, (скрипт создает страницу html с данными передаваемыми из формы прописывание charset не помогает символы все равно в utf а переключать кодировку каждый раз....)

    Всего записей: 1 | Зарегистр. 24-11-2004 | Отправлено: 12:35 24-11-2004
    Anton_Y



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    novij
    вот тут есть соответствие.. http://forum.ru-board.com/topic.cgi?forum=31&topic=0633&start=20#10 отсюда и пляши.. просто tr\\\


    ----------
    Чаще всего меня можно найти на форуме famaclamosa.com
    и самое главное (!) - Мой хостер - hosteam.ru

    Всего записей: 581 | Зарегистр. 04-09-2002 | Отправлено: 13:17 24-11-2004 | Исправлено: Anton_Y, 13:51 24-11-2004
    apatit



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    novij
    http://www.google.ru/search?hl=ru&q=perl+utf-8+to+win-1251&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=

    ----------
    http://www.murman.ws/ - Нет очередям в налоговой и на почте! Сэкономим бумагу.

    Всего записей: 1169 | Зарегистр. 09-10-2001 | Отправлено: 15:04 24-11-2004
    CheRt



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    batva, вот мы и развели флуд, хоть и не хотели, ну да ладно, если хочешь - прочти удали, в твоем примере есть 1 минус(я про внутренние таги): он не учитывает пробелы, а ведь любой браузер, разбирая таги, проверочку делает, а тут получается сработка только в случае отсутствия пробелов - бага!
    ----------
    batva, забьем на пробелы(кстати циклы я задавал, только потому, что не знаю всех флагов поиска и замены, поэтому спасибки за науку ).
     

    Код:
    $body =~ s/(\[color=)([A-Za-z]+|[#\dA-F]+)\](.+?)(\[\/color])/<font color=\"$2\">$3<\/font>/isg;

    Вносим пару правочек:

    Код:
    $body =~ s/(\[color=)([a-z]+|[#\dA-F]+)\](.+?)(\[\/color\])/<font color=\"$2\">$3<\/font>/isg;
     
    Так будет чуть лучше, просто раз уж здесь примеры складируем и начали говорить о красоте и правильности, так пусть будет наиболее точный вариант!
     
    + еще 1 заметка, а ты уверен, что раздельная замена([color=bla_bla] и [/color]) не будет работать быстрее?!

    ----------
    В огне бода нет и не будет!
    До встречи в СССР 2.0!

    Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 00:19 25-11-2004 | Исправлено: CheRt, 20:20 26-11-2004
    batva



    crazy administrator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CheRt
    Эх..
    Ты ничего не понял.
    Ну причем тут пробелы.
     
    Я для этого и написал слово "пример", чтобы показать именно пример, как вместо твоего кода

    Код:
     
    while(){
    blabla
    }
    while(){blabla}
     

    делать красиво, а главное быстро.
     
    А уж дальше делай что хочешь, пробелы тебе нужны?
    Нет проблем, добавь их туда..
     
     

    Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 17:23 25-11-2004
    batva



    crazy administrator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    еще 1 заметка, а ты уверен, что раздельная замена([color=bla_bla] и [/color]) не будет работать быстрее?!

    Уверен, что не будет.
     
    Возьми и проверь.
     
    И еще в плане безопасности.
    Почему нужно именно попарно теги обрабатывать.
     
    Незакрытые теги, или лишние закрывающие могут вызвать очень большие проблемы.
     
     
     

    Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 20:32 26-11-2004
    Anton_Y



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как подсчитать количество одинаковых элементов в массиве.
     
    my @a = ('dog','cat','dog','slon','dog','cat');
    $h{$_}+=1 foreach @a;
    @k = keys %h;
    print "$_ : $h{$_}" foreach (@k);

    Всего записей: 581 | Зарегистр. 04-09-2002 | Отправлено: 12:59 13-01-2005
    cr4k3r



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Очитстка переменной, заимствовано из  ikonboard

    Код:
     
    sub clean {
        my $Tmp = shift;
        return '' unless defined $Tmp;
        $Tmp =~ s|&|&amp;|g;
        $Tmp =~ s|<!--|&#60;&#33;--|g; $Tmp =~ s|-->|--&#62;|g;
        $Tmp =~ s|<script|&#60;script|ig;
        $Tmp =~ s|>|&gt;|g;
        $Tmp =~ s|<|&lt;|g;
        $Tmp =~ s|"|&quot;|g;
        $Tmp =~ s!^\s+!!;
        $Tmp =~ s!\s+$!!;
        $Tmp =~ s|  | &nbsp;|g;
        $Tmp =~ s!\|!&#124;!g;
        $Tmp =~ s|\n|<br>|g;
        $Tmp =~ s|\$|&#036;|g;
        $Tmp =~ s|\r||g;
        $Tmp =~ s|\_\_(.+?)\_\_||g;
        $Tmp =~ s|\\|&#92;|g;
        $Tmp =~ s|!|&#33;|g;
        $Tmp =~ s|\'|&#39;|g;
        return $Tmp;
    }
     

     
    Сам пользуюсь этой функцией постоянно.

    Всего записей: 83 | Зарегистр. 27-10-2004 | Отправлено: 17:22 18-01-2005
    Nvc

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Мониторинг времени работы скрипта:  

    Код:
    package Lib::Time;
     
    use Time::HiRes qw( gettimeofday );
     
    sub new
    {
      my $self = {};
      $obref = bless $self;
      $self->{create} = Time();
      $self->{time} = 0;
      return $obref;
    }
     
    sub start
    {
      my $self = shift;
      my $name = shift || 'main';
      $self->{$name}->{comment} = shift or '';
      $self->{$name}->{start} = gettimeofday();
      $self->{$name}->{count} ? ($self->{$name}->{count} += 1) : ($self->{$name}->{count} = 1);
      return 0;
    }
     
    sub stop
    {
      my $self = shift;
      my $name = shift || 'main';
      $self->{$name}->{stop} = gettimeofday();
      $self->{$name}->{time} += ($self->{$name}->{stop} - $self->{$name}->{start});
      return $self->{$name}->{time};
    }
     
    sub get
    {
      my $self = shift;
      my $name = shift || 'main';
      return $self->{$name};
    }
     
    sub get_time
    {
      my $self = shift;
      my $name = shift || 'main';
      return sprintf("%.1f",$self->{$name}->{time}*1000);
    }
     
    sub get_count
    {
      my $self = shift;
      my $name = shift || 'main';
      return $self->{$name}->{count};
    }
     
    sub get_comment
    {
      my $self = shift;
      my $name = shift || 'main';
      return $self->{$name}->{comment};
    }
     
     
     
    ############################################################
    END {}
     
    1;

    Всего записей: 235 | Зарегистр. 01-08-2004 | Отправлено: 01:50 19-01-2005 | Исправлено: Nvc, 14:35 04-02-2005
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9

    Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: Полезные решения


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru