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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    OLEX



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Генерация 100% уникальных кодов:
     

    Код:
    #!/usr/bin/perl -w
    $dict = '1234567890qwertyuipasdfghjklzxcvbnm';
    $totalLength = 500000;
    $codeLength = 12;
    $dictLength = length($dict) - 1;
     
    %codes = ();
    while (keys(%codes) < $totalLength){
      $res = '';
      for ($i = 0; $i < $codeLength; $i++){
        $res .= substr($dict,rand($dictLength), 1);
      }
      $codes{$res} = undef;
    }

     
    http://landgraf-paul.blogspot.com/2011/06/100.html

    ----------
    Отче Наш, иже еси в моем PC. Да святится имя и расширение Твоё. ENTER.

    Всего записей: 3590 | Зарегистр. 09-07-2002 | Отправлено: 13:58 30-08-2013
    mark74

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    OLEX
    с не нулевой вероятностью коды могут совпадать
     
    добавлено:
    не могут, см. ниже

    Всего записей: 480 | Зарегистр. 25-01-2009 | Отправлено: 20:24 02-09-2013 | Исправлено: mark74, 16:31 02-06-2014
    HappyPeople

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    народ, я знаю что вопрос не по теме, но я уже голову сломал. у меня не загружается 3 сайта , не загружаются они только у МЕНЯ и только на Моем компьютере. сначала я грешил на троян или ват, но сканировал и ничего не нашел. потом я грешил на файл HOSTS он и он без изменений (на всякий случай все равно его востановил). браузер пишет при попытке попасть на эти сервы что сервер не дал ответ/нет соединения/сервер не доступен. подскажите что делать я уже все перепробовал (даже win переустановил)





    Название темы прочитайте и подумайте, каким образом ваш вопрос к ней относится. /Cheery/

    Всего записей: 3 | Зарегистр. 03-09-2013 | Отправлено: 10:09 04-09-2013 | Исправлено: Cheery, 10:44 04-09-2013
    L_S_V



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

    Цитата:
    Генерация 100% уникальных кодов:  

    лучше....
     
    perl -e 'print  sprintf("%016X", rand(1000000));'

    Всего записей: 627 | Зарегистр. 31-03-2005 | Отправлено: 06:11 17-09-2013
    OLEX



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mark74
    никаких вероятностей, коды абсолютно уникальны.
     
    L_S_V
    Вобще ваш пост не понятен, что чего лучше? К чему ваш код, выдающий одно число?

    Всего записей: 3590 | Зарегистр. 09-07-2002 | Отправлено: 00:59 01-12-2013
    mark74

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    OLEX
     
    L_S_V привел вполне рабочий, лаконичный пример получения одного случайного (или там псевдослучайного) кода. IMO, его "лучше" это не проблема: можно понять в каком смысле лучше, в каком хуже. А вот ваши "100%" и "абсолютно" - это ложные утверждения.
     
    Да, вы привели рабочий способ получить какое-то количество кодов, случайным образом распределённых по множеству состоящему из 35**12 кодов. Но то что полученные коды уникальные, надо проверять. Где в вашем алгоритме проверка? Нет проверки - нет оснований для утверждений "100%", "абсолютно".
     
    - вероятно... по аналогии с PGP - "вполне хорошая вероятность", но не абсолютность

    Всего записей: 480 | Зарегистр. 25-01-2009 | Отправлено: 10:42 12-12-2013
    nawatar_ru

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

    Цитата:
    позже можно будет архив форума сделать и подобные вещи собирать там кучками


    Цитата:
    Идея насчет примеров для начинающих -это похвально, только реализовыватье её в виде темы в форуме не есть хорошо


    Цитата:
    Svarga я за архив! Хорошая идея

    Мне кажется эта тема действительно требует соответствующего оформления со стороны администраторов.
    Не плохо будет и вопрос с правами на использование решить. Воткнул скрипт, а потом претензию получаешь - вы использовали часть моей программы.

    Всего записей: 15 | Зарегистр. 18-11-2013 | Отправлено: 11:59 16-12-2013
    wMavr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет! Не могу найти дрова на РС камеру Если кто может помогите
    USB\VID_0AD2&PID_900A&REV_0100
    USB\VID_0AD2&PID_900A





    Еще раз говорю - прочитайте внимательно в каком разделе форума вы пишете /Cheery/

    Всего записей: 2 | Зарегистр. 05-02-2014 | Отправлено: 16:35 05-02-2014 | Исправлено: Cheery, 21:24 05-02-2014
    OLEX



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

    Цитата:
    А вот ваши "100%" и "абсолютно" - это ложные утверждения.

     
    Ты блин перл видел хоть одним глазком дурик?
    Еще раз повторюсь - я привел код для генерации гарантированно 100% уникальных кодов.  
    Никаких проверок там не требуется. Уникальность кодов гарантируется уникальностью ключей в хеше! Это и есть основание для "100%" и "абсолютно".
     

    Всего записей: 3590 | Зарегистр. 09-07-2002 | Отправлено: 19:04 29-05-2014 | Исправлено: OLEX, 19:05 29-05-2014
    mark74

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

    Цитата:
    Уникальность кодов гарантируется уникальностью ключей в хеше!

    дошло...
    извини
    надо было сразу по ссылке в твоем посте перейти, где всё разжёвано.

    Всего записей: 480 | Зарегистр. 25-01-2009 | Отправлено: 16:20 02-06-2014
    xerpal



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ошибся темой...

    Всего записей: 1584 | Зарегистр. 08-10-2011 | Отправлено: 12:08 23-09-2015 | Исправлено: xerpal, 12:17 23-09-2015
    leshikbr

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет, у кого есть модуль доставки exline api поделитесь плиз

    Всего записей: 69 | Зарегистр. 16-05-2012 | Отправлено: 10:08 17-10-2015
    mark74

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    С версии 5.22.0 (которой уже около года) можно создавать ссылки-псевдонимы:

    Код:
     
    use strict;
    use warnings;
     
    my $v='unchanged';
     
    sub modify($) {
        use feature 'refaliasing';
        no warnings 'experimental::refaliasing';
     
        my $w;
        \$w = \$_[0];
        $w = 'modified';
    }
     
    modify $v;
    print "$v\n";
     

    manpage
    так красивей по сравнению с $$w и, по идее, должно быть быстрее
     

    Всего записей: 480 | Зарегистр. 25-01-2009 | Отправлено: 19:44 25-08-2016 | Исправлено: mark74, 09:57 26-08-2016
    OLEX



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Разбить строку на массив по n символов:

    Код:
     
    @array = $string =~ /.{1,n}/g;
     


    ----------
    Отче Наш, иже еси в моем PC. Да святится имя и расширение Твоё. ENTER.

    Всего записей: 3590 | Зарегистр. 09-07-2002 | Отправлено: 13:52 30-09-2016
    mark74

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

    Цитата:
    Чтобы удалить элемент массива, зная его значение, делаем так:
     
    @array = [ grep $_!= 3 , @array ];

     
    в итоге получаем указатель на массив  
    чтобы получить массив надо чтобы справа был список т.е. (что то в круглых скобках)
     
    а вообще круто

    Всего записей: 480 | Зарегистр. 25-01-2009 | Отправлено: 05:14 14-10-2016
    L_S_V



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите по генераторам XML.
    Как сделать есть ли готовые, генераторы спонтанного html-кода?
    Например java script'а?
    Генерить свободные теги рендомно.
     
    p.s. тему ниже можно удалить.

    Всего записей: 627 | Зарегистр. 31-03-2005 | Отправлено: 13:49 21-02-2017
    Omezims

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




    Спам

    Всего записей: 2 | Зарегистр. 27-02-2017 | Отправлено: 23:51 27-02-2017
    tarrac



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кому надоест снимать стату с принтеров  
    http://dumpz.org/2495810/
     
    Заодно некоторые MIB  

    Код:
     
    # Уровень картриджей
    my $MIB_LEVEL_BLACK="1.3.6.1.2.1.43.11.1.1.9.1.1";
    my $MIB_LEVEL_CYAN="1.3.6.1.2.1.43.11.1.1.9.1.2";
    my $MIB_LEVEL_MAGENTA="1.3.6.1.2.1.43.11.1.1.9.1.3";
    my $MIB_LEVEL_YELLOW="1.3.6.1.2.1.43.11.1.1.9.1.4";
     
    #Отпечатано  
    my $MIB_REST_BLACK="1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.10.11.1.0";        # Черный картридж  
    my $MIB_REST_CYAN ="1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.10.11.2.0";        # Голубой картридж  
    my $MIB_REST_MAGENTA ="1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.10.11.3.0";    #Пурпурный картридж  
    my $MIB_REST_YELLOW ="1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.10.11.4.0";  #Желтый картридж  
     
    #Модель
    my $MIB_MODEL_BLACK = "1.3.6.1.2.1.43.11.1.1.6.1.1";        #Черный картридж  
    my $MIB_MODEL_CYAN = "1.3.6.1.2.1.43.11.1.1.6.1.2";
    my $MIB_MODEL_MAGENTA = "1.3.6.1.2.1.43.11.1.1.6.1.3";
    my $MIB_MODEL_YELLOW = "1.3.6.1.2.1.43.11.1.1.6.1.4";
     
    #Имя принтера
    my $NAME="1.3.6.1.2.1.43.5.1.1.16.1";
     

    Всего записей: 414 | Зарегистр. 29-09-2003 | Отправлено: 08:33 04-05-2017 | Исправлено: tarrac, 08:38 04-05-2017
    mark74

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пример получения слайса из хэша, когда имеется массив хэшей с одинаковыми ключами.

    Код:
    use strict;
    use warnings;
    use feature 'say';
     
    my @aoh = (
            {I => 'a', II => 'b', III => 'c'},
            {I => 'uno', II => 'due', III => 'tre'},
            {I => 'аз', II => 'буки', III => 'веди'},
        );
     
    for my $i (0..$#aoh) {
        say "$i: ", join ",\t", map "$_ => $aoh[$i]{$_}", sort keys %{$aoh[$i]};
    }
     
    # три выражения ниже равнозначны
    say $aoh[rand @aoh]{III};
    say $aoh[rand @aoh]->{III};
    say ${$aoh[rand @aoh]}{III};
     
    # но в случае слайса мы вынуждены городить следующее:
    my @pair = @{$aoh[rand @aoh]}{'I', 'II'};
    say "$pair[0], $pair[1]";
     


    Всего записей: 480 | Зарегистр. 25-01-2009 | Отправлено: 09:02 02-10-2017 | Исправлено: mark74, 04:10 10-10-2017
    OLEX



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Разделение числа на разряды с помощью регулярного выражения

    Код:
    s/(?<=\d)(?=(\d{3})+(?!\d))/,/g

     
    Взято тут: http://m-ivanov.livejournal.com/6653.html

    ----------
    Отче Наш, иже еси в моем PC. Да святится имя и расширение Твоё. ENTER.

    Всего записей: 3590 | Зарегистр. 09-07-2002 | Отправлено: 07:01 17-12-2017
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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