#!/usr/bin/perl -w # Check an email against a spam keyword filter. use strict; use Data::Dumper; my $x = do { local $/; <> }; my %points; my $rule = "uninitialized"; sub bad_add { my ($points, $category) = @_; my ($module, $file, $line) = caller; $points{$category}{$rule} += $points; } for my $rules_file (qw(scam.txt foul.txt pitch.txt)) { my @rules = do { open S, $rules_file or die "$rules_file: $!"; }; foreach (@rules) { chomp; s/elsif/if/; $rule = $_; eval $rule; die "$rule: $@" if $@; } } print Dumper \%points;