LINUX.ORG.RU

Сообщения kavkaz

 

[perl] [xs] Регулярные выражения

Есть проблема, не понятно как использовать регулярки в xs. В инете нарыл пример http://www.mail-archive.com/perl-xs@perl.org/msg02059.html

SV*
regex_once(SV *regex_ref, SV *text) {
    SV *regex_sv;
    regexp *rx;
    char *stringarg, *stringbeg, *stringend;
    MAGIC *mg = NULL;

    if (!SvROK(regex_ref)) croak("not a ref");
    regex_sv = SvRV(regex_ref);
    if (!SvMAGICAL(regex_sv)) croak("No magic");
    mg       = mg_find(regex_sv, PERL_MAGIC_qr);
    rx       = (REGEXP*)mg->mg_obj;

    stringbeg = SvPV_nolen(text);
    stringarg = stringbeg;
    stringend = SvEND(text);

    pregexec(rx, stringarg, stringend, stringbeg, 1, text, 1);

    return newSVpv(stringbeg, rx->endp[0]);
}
С учетом документации ( http://perldoc.perl.org/perlapi.html#REGEXP-Functions ), и подставляя его в свои реалии, получаем такой кусок кода
SV *mask;
mask = *hv_fetch( hv, "mask", 4, 0);

SV *path_info;
path_info = *hv_fetch( hv, "path_info", 9, 0);

if (SvRXOK(mask)) {
    printf("\tmask is regexp\n");
            
    REGEXP *rx;
    rx = SvRX(mask);
                    
    char *strarg, *strbeg, *strend;
                    
    strbeg = SvPV_nolen(path_info);
    strarg = strbeg;
    strend = SvEND(path_info);
                    
    pregexec( rx, strarg, strend, strbeg, 1, path_info, 1 );
                    
    printf("\t\treg[%s][%s][%s]\n",strarg,strbeg,strend);
}

  1. Не ясно что вообще должно быть на выходе
  2. Ловлю ошибку, если делать как в примере
    warning: assignment from incompatible pointer type
    error: 'REGEXP' has no member named 'endp'
    
  3. В документации функция pregexec числится как недокументированная ( http://perldoc.perl.org/perlapi.html#Undocumented-functions )

Нужно просто поймать true/false при исполнении регулярки на строку.

 

kavkaz
()

[Вакансия] Perl программист, Лента.Ру, Москва

В технический отдел Лента.Ру требуются perl программисты для решения следующих задач:
1) Импортирование данных из текстовых файлов, разбросанных по файловой системе в БД, с последующей проверкой данных. По сути вакансия подразумевает поиск «backend программиста». В качестве базы данных выступает mysql. Как следствие, умение грамотно структурировать, организовывать хранение данных, расставлять индексы и составлять запросы для выборки данных, является обязательным. В то же время никто вас не будет заставлять проектировать структуру с нуля. Она уже сформирована, нужно просто следовать ей, и понимать как это работает, понимать, куда двигаться дальше (после импорта будет производиться дробление на более мелкие сущности, с целью установления связей между глобальными сущностями).
Параллельно нужно изучить работу нового движка, с целью его поддержки и развития.
2) Влиться в команду «программист – верстальщик – дизайнер интерфейсов». Перед командой будет ставиться задача разработки интерфейсов для редактирования новостных заметок. Программисту необходимо обрабатывать поступающие запросы на редактирование, сохранять данные в БД на основе имеющейся структуры. Никаких волевых решений опять же принимать не будет необходимости.

Работа будет проходить под контролем менеджера и ведущего разработчика. Вам всегда будет кого спросить о том, как разрешить ту или иную задачу, и с вас спросят за качество написанного вами кода.

Подразумевается работа с системами управлениями проектами, типа Trac, и контроля версиями, типа git. При разработке необходимо придерживаться использования существующих самописных программ. Использование modern perl (каталист, мус, орм и иже с ними) не приветствуется и не обсуждается.

Как видно, это работа из разряда «рутинных», но требующая опыта работы по соответствующим направлениям. Отсюда вытекает размер вознаграждения: 70 тыс рублей на руки, зарплата белая + соц пакет, все дела... Хотите больше? обоснуйте, возможно нас заинтересует, в свою очередь такие люди должны убедить, что они смогут делать такие рутинные задачи.

В человеках: в идеале хотим два человека на первую задачу, и одного на вторую.

В списке задач будут так же такие, как, например, написание веб сокет сервера (использование готовых open source решений + допиливание под наши нужды) для внутренних нужд. кому будет делегирована задача, решим по ходу пьесы.

Работы много, времени на эксперименты мало. нужен профессиональный код в сжатые сроки.

Стучаться сюда: zaur собака lenta-co.ru с пометкой в теме письма «Резюме, perl программист»

 

kavkaz
()

RSS подписка на новые темы