email-filter.pl
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
}