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

KHyT

Знаток
Регистрация
26 Апр 2008
Сообщения
328
Реакции
25
Очень нужен скрипт из файла со всяким мусором(текстом) вытащить все email адреса, помогите со скритпом пожалуйста
 
#!/usr/bin/perl -w
use strict;

my $file = shift || "list.txt";

open IN, "<", $file or die "Can't open file $file: $!\n";
my @str = <IN>;
my $all = join "", @str;

my @emails = ($all =~ /\b([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})\b/g);
print join "\n", @emails;
Вытащит мыла, которые находятся между границами слов \b - т.е., не в общей каше типа
, а разделены пробелами, запятыми-точками, переводами строк итд
 
  • Нравится
Реакции: KHyT
Вытащит мыла, которые находятся между границами слов \b - т.е., не в общей каше типа
, а разделены пробелами, запятыми-точками, переводами строк итд
Спасибо за помощь
Вот объясните начинаещиму 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]
 
Никакого секрета в добавлении my нет - это просто стандарт де-факто хорошего перл-кода года так с 2000-го или раньше :)
Без use strict/my код очень легко превращается в редкостную помойку и спагетти, а при использовании - сам интерпретатор не даcт этому случиться.
Использование стрикта не позволяет тебе объявлять любую переменную где угодно, и менять ее откуда угодно - это спец решение Ларри для ограничения области видимости переменных и воплощение еще каких-то пунктов хорошего стиля кода. На практике - код без стрикта обычно не совместим с кодом с use strict.
Почитай кэмелбук (с верблюдом на обложке которая) или даже ламабук - вроде и там прагма use strict подробно рассмотрена.
 
  • Нравится
Реакции: KHyT
Назад
Сверху