email-filter.pl
author indvdum
Tue, 21 Jun 2011 02:28:42 +0400
changeset 5 7712f74efd6e
parent 4 b1e6dfadc2f8
child 6 37eab168f50c
permissions -rwxr-xr-x
* refactoring
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
}