author | indvdum |
Tue, 21 Jun 2011 02:16:26 +0400 | |
changeset 4 | b1e6dfadc2f8 |
parent 3 | 460bc4e6539f |
child 5 | 7712f74efd6e |
permissions | -rwxr-xr-x |
indvdum@2 | 1 |
#!/usr/bin/perl |
indvdum@3 | 2 |
use strict; |
indvdum@2 | 3 |
|
indvdum@3 | 4 |
# Глобальные переменные |
indvdum@3 | 5 |
my $fileName; |
indvdum@3 | 6 |
my $isRemoveDuplicates = 0; |
indvdum@3 | 7 |
my $isSplitByDomens = 0; |
indvdum@3 | 8 |
my $excludeDomen; |
indvdum@3 | 9 |
|
indvdum@3 | 10 |
# Парсим параметры командной строки |
indvdum@3 | 11 |
my $arg = shift(); |
indvdum@3 | 12 |
my $isHasArgs = 0; |
indvdum@3 | 13 |
until ($arg eq '') { |
indvdum@3 | 14 |
$isHasArgs = 1; |
indvdum@3 | 15 |
if($arg =~ /^-{1,2}.+$/){ |
indvdum@3 | 16 |
if ($arg =~ /^-{1,2}version$/){ |
indvdum@3 | 17 |
about(); |
indvdum@3 | 18 |
exit 0; |
indvdum@3 | 19 |
} elsif ($arg =~ /^-{1,2}help$/){ |
indvdum@3 | 20 |
help(); |
indvdum@3 | 21 |
exit 0; |
indvdum@3 | 22 |
} elsif ($arg eq '--remove-duplicates'){ |
indvdum@3 | 23 |
$isRemoveDuplicates = 1; |
indvdum@3 | 24 |
} elsif ($arg eq '--split-by-domens'){ |
indvdum@3 | 25 |
$isSplitByDomens = 1; |
indvdum@3 | 26 |
} elsif ($arg =~ /--exclude-domen[=]{0,1}(\w*)/){ |
indvdum@3 | 27 |
$excludeDomen = $1; |
indvdum@4 | 28 |
illegalUse() if $excludeDomen ne '' && $arg !~ /--exclude-domen=\w*/; |
indvdum@3 | 29 |
$excludeDomen = shift() if $excludeDomen eq ''; |
indvdum@3 | 30 |
illegalUse() if $excludeDomen eq ''; |
indvdum@3 | 31 |
} else { |
indvdum@3 | 32 |
illegalUse(); |
indvdum@3 | 33 |
} |
indvdum@3 | 34 |
} else { |
indvdum@3 | 35 |
illegalUse() if $fileName ne ''; |
indvdum@3 | 36 |
$fileName = $arg; |
indvdum@3 | 37 |
} |
indvdum@3 | 38 |
$arg = shift(); |
indvdum@3 | 39 |
}; |
indvdum@3 | 40 |
undef $arg; |
indvdum@3 | 41 |
if (!$isHasArgs) { |
indvdum@3 | 42 |
about(); |
indvdum@3 | 43 |
exit 0; |
indvdum@3 | 44 |
} |
indvdum@3 | 45 |
processFile(); |
indvdum@3 | 46 |
|
indvdum@3 | 47 |
# Вывод информации о программе |
indvdum@3 | 48 |
sub about { |
indvdum@3 | 49 |
my $about = q { |
indvdum@2 | 50 |
E-mail filter tool for Aptech |
indvdum@2 | 51 |
version 0.1 |
indvdum@2 | 52 |
|
indvdum@2 | 53 |
Copyright 2011, David Veliev (gotoindvdum@gmail.com). |
indvdum@2 | 54 |
|
indvdum@2 | 55 |
This program may be used under Apache License 2.0. |
indvdum@2 | 56 |
}; |
indvdum@3 | 57 |
|
indvdum@3 | 58 |
print $about; |
indvdum@3 | 59 |
} |
indvdum@2 | 60 |
|
indvdum@3 | 61 |
# Вывод доступных параметров командной строки |
indvdum@3 | 62 |
sub help { |
indvdum@3 | 63 |
my $help = q {usage: }.$0. q { [KEYS] FILENAME [KEYS] |
indvdum@3 | 64 |
|
indvdum@3 | 65 |
Parse for e-mails file FILENAME with arguments KEYS and print result to standart output stream. |
indvdum@3 | 66 |
|
indvdum@3 | 67 |
Arguments: |
indvdum@3 | 68 |
--help print this help |
indvdum@3 | 69 |
--version print version and information about this script |
indvdum@3 | 70 |
--remove-duplicates remove e-mail duplicates |
indvdum@3 | 71 |
--split-by-domens split e-mails by domens |
indvdum@3 | 72 |
--exclude-domen[=]DOMEN exclude e-mails with domen DOMEN |
indvdum@3 | 73 |
}; |
indvdum@3 | 74 |
print $help; |
indvdum@3 | 75 |
} |
indvdum@3 | 76 |
|
indvdum@3 | 77 |
# Неправильный формат параметров командной строки |
indvdum@3 | 78 |
sub illegalUse { |
indvdum@3 | 79 |
print "Illegal use!\n\n"; |
indvdum@3 | 80 |
help(); |
indvdum@3 | 81 |
exit 1; |
indvdum@3 | 82 |
} |
indvdum@3 | 83 |
|
indvdum@3 | 84 |
# Обработка файла |
indvdum@3 | 85 |
sub processFile { |
indvdum@3 | 86 |
print "fileName = $fileName\n"; |
indvdum@3 | 87 |
print "isRemoveDuplicates = $isRemoveDuplicates\n"; |
indvdum@3 | 88 |
print "isSplitByDomens = $isSplitByDomens\n"; |
indvdum@3 | 89 |
print "excludeDomen = $excludeDomen\n"; |
indvdum@3 | 90 |
} |