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