[Perl] Вытащить из файла все email адреса

Тема в разделе "Другие языки", создана пользователем KHyT, 18 авг 2011.

Модераторы: Цукер
  1. KHyT

    KHyT

    Регистр.:
    26 апр 2008
    Сообщения:
    328
    Симпатии:
    27
    Очень нужен скрипт из файла со всяким мусором(текстом) вытащить все email адреса, помогите со скритпом пожалуйста
     
  2. jami

    jami Постоялец

    Регистр.:
    10 авг 2011
    Сообщения:
    114
    Симпатии:
    39
    Вытащит мыла, которые находятся между границами слов \b - т.е., не в общей каше типа
    , а разделены пробелами, запятыми-точками, переводами строк итд
     
    KHyT нравится это.
  3. KHyT

    KHyT

    Регистр.:
    26 апр 2008
    Сообщения:
    328
    Симпатии:
    27
    Спасибо за помощь
    Вот объясните начинаещиму Perl программисту не как не могу вьехать, почему все программисты Perl перед переменными добавляют my
    Я понимаю что это локальные переменые так объявляют, но это вроде бы как бы понятно когда они в функцию заключены, просто сейчас часто анализирую коды и почти все переменые в них с my
    во и этот код
    Код:
    [B]#!/usr/bin/perl -w
    use strict;
    
    [COLOR="Red"]my[/COLOR] $file = shift || "list.txt";
    
    open IN, "<", $file or die "Can't open file $file: $!\n";
    [COLOR="Red"]my[/COLOR] @str = <IN>;
    my $all = join "", @str;
    
    [COLOR="Red"]my[/COLOR] @emails = ($all =~ /\b([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})\b/g);
    print join "\n", @emails;[/B]
     
  4. jami

    jami Постоялец

    Регистр.:
    10 авг 2011
    Сообщения:
    114
    Симпатии:
    39
    Никакого секрета в добавлении my нет - это просто стандарт де-факто хорошего перл-кода года так с 2000-го или раньше :)
    Без use strict/my код очень легко превращается в редкостную помойку и спагетти, а при использовании - сам интерпретатор не даcт этому случиться.
    Использование стрикта не позволяет тебе объявлять любую переменную где угодно, и менять ее откуда угодно - это спец решение Ларри для ограничения области видимости переменных и воплощение еще каких-то пунктов хорошего стиля кода. На практике - код без стрикта обычно не совместим с кодом с use strict.
    Почитай кэмелбук (с верблюдом на обложке которая) или даже ламабук - вроде и там прагма use strict подробно рассмотрена.
     
    KHyT нравится это.