fide
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 5
Chess::FIDE 1.00
Chess::FIDE is a Perl extension for FIDE Rating List. more>>
Chess::FIDE is a Perl extension for FIDE Rating List.
SYNOPSIS
use Chess::FIDE;
my $fide = Chess::FIDE->new(-file=>filename);
$fide->fideSearch("surname eq Kasparov");
Chess::FIDE - Perl extension for FIDE Rating List. FIDE is the International Chess Federation that every quarter of the year releases a list of its rated members. The list contains about fifty thousand entries. This module is designed to parse its contents and to search across it using perl expressions. A sample list from April 2004 is provided under filename APR04FRL.TXT The following methods are available:
Constructor
$fide = new Chess::FIDE(-file=>localfile); $fide = new Chess::FIDE(-www=>1,[-proxy=>proxyaddress]);
There are two types of constructors - one takes a local file and another one retrieves the up-to-date zip file from the FIDE site, unzips it on the fly and parses the output immediately. In case of the second constructor no files are created. Also usage of an optional proxy is possible in the second case.
Each player entry in the file is scanned against a regexp and then there is a post-parsing as well which is implemented in function parseLine. The entry is then stored in an object defined by the module Chess::FIDE::Player (see its documentation). Every new object is inserted as a hash member where the FIDE ID of the player is the key. A sparse array could be used instead, though.
fideSearch
@result = $fide->fideSearch("perl conditional");
Example: @result = $fide->fideSearch("surname eq Kasparov");
Searches the fide object for entries satisfying the conditional specified as the argument. The conditional MUST be a PERL expression within double quotes. All constant strings should be expressed within single quotes because the conditional is evaled against each entry. Any conditional including a regexp match that may be eval-ed is valid. For the fields to use in conditionals see Chess::FIDE::Player documentation.
<<lessSYNOPSIS
use Chess::FIDE;
my $fide = Chess::FIDE->new(-file=>filename);
$fide->fideSearch("surname eq Kasparov");
Chess::FIDE - Perl extension for FIDE Rating List. FIDE is the International Chess Federation that every quarter of the year releases a list of its rated members. The list contains about fifty thousand entries. This module is designed to parse its contents and to search across it using perl expressions. A sample list from April 2004 is provided under filename APR04FRL.TXT The following methods are available:
Constructor
$fide = new Chess::FIDE(-file=>localfile); $fide = new Chess::FIDE(-www=>1,[-proxy=>proxyaddress]);
There are two types of constructors - one takes a local file and another one retrieves the up-to-date zip file from the FIDE site, unzips it on the fly and parses the output immediately. In case of the second constructor no files are created. Also usage of an optional proxy is possible in the second case.
Each player entry in the file is scanned against a regexp and then there is a post-parsing as well which is implemented in function parseLine. The entry is then stored in an object defined by the module Chess::FIDE::Player (see its documentation). Every new object is inserted as a hash member where the FIDE ID of the player is the key. A sparse array could be used instead, though.
fideSearch
@result = $fide->fideSearch("perl conditional");
Example: @result = $fide->fideSearch("surname eq Kasparov");
Searches the fide object for entries satisfying the conditional specified as the argument. The conditional MUST be a PERL expression within double quotes. All constant strings should be expressed within single quotes because the conditional is evaled against each entry. Any conditional including a regexp match that may be eval-ed is valid. For the fields to use in conditionals see Chess::FIDE::Player documentation.
Download (1.1MB)
Added: 2007-01-04 License: Perl Artistic License Price:
1026 downloads
Chess::FIDE::Player 1.00
Chess::FIDE::Player is a Perl module to parse player data from FIDE Rating List. more>>
Chess::FIDE::Player is a Perl module to parse player data from FIDE Rating List.
SYNOPSIS
use Chess::FIDE::Player qw(@FIDE_field);
my $player = Chess::FIDE::Player->new(%param);
print $player->id() . "n";
$player->value(field);
Chess::FIDE::Player - Parse player data from FIDE Rating List. FIDE is the International Chess Federation that every quarter of the year releases a list of its rated members. The list contains about fifty thousand entries. This module provides means of translation of every entry into a perl object containing all the fields.
Constructor
$player = Chess::FIDE::Player->new(%param);
The constructor creates a hash reference, blesses it and fills it with parameters passed in %param. The parameters should be fields corresponding to @FIDE_field (see section EXPORT). If a field is not defined, a default value contained in %init is used, and if it is the id field, the next default id is increased by one.
value
$player->value(field); $player->value(field,$value);
First one retrieves a field in the $player object. If the field is not valid (i.e. not contained in @FIDE_field, an undef is returned. Second one sets the field to $value, and again in case of an invalid field undef is returned. Otherwise the new value of the field is returned.
EXPORT
@FIDE_field
- array of valid fields for the Player object.
<<lessSYNOPSIS
use Chess::FIDE::Player qw(@FIDE_field);
my $player = Chess::FIDE::Player->new(%param);
print $player->id() . "n";
$player->value(field);
Chess::FIDE::Player - Parse player data from FIDE Rating List. FIDE is the International Chess Federation that every quarter of the year releases a list of its rated members. The list contains about fifty thousand entries. This module provides means of translation of every entry into a perl object containing all the fields.
Constructor
$player = Chess::FIDE::Player->new(%param);
The constructor creates a hash reference, blesses it and fills it with parameters passed in %param. The parameters should be fields corresponding to @FIDE_field (see section EXPORT). If a field is not defined, a default value contained in %init is used, and if it is the id field, the next default id is increased by one.
value
$player->value(field); $player->value(field,$value);
First one retrieves a field in the $player object. If the field is not valid (i.e. not contained in @FIDE_field, an undef is returned. Second one sets the field to $value, and again in case of an invalid field undef is returned. Otherwise the new value of the field is returned.
EXPORT
@FIDE_field
- array of valid fields for the Player object.
Download (1.1MB)
Added: 2006-12-21 License: Perl Artistic License Price:
1038 downloads
perlhack 5.8.8
perlhack is a Perl module that will show you how to hack at the Perl internals. more>>
perlhack is a Perl module that will show you how to hack at the Perl internals.
This document attempts to explain how Perl development takes place, and ends with some suggestions for people wanting to become bona fide porters.
The perl5-porters mailing list is where the Perl standard distribution is maintained and developed. The list can get anywhere from 10 to 150 messages a day, depending on the heatedness of the debate. Most days there are two or three patches, extensions, features, or bugs being discussed at a time.
A searchable archive of the list is at either:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/
or
http://archive.develooper.com/perl5-porters@perl.org/
List subscribers (the porters themselves) come in several flavours. Some are quiet curious lurkers, who rarely pitch in and instead watch the ongoing development to ensure theyre forewarned of new changes or features in Perl. Some are representatives of vendors, who are there to make sure that Perl continues to compile and work on their platforms. Some patch any reported bug that they know how to fix, some are actively patching their pet area (threads, Win32, the regexp engine), while others seem to do nothing but complain. In other words, its your usual mix of technical people.
Over this group of porters presides Larry Wall. He has the final word in what does and does not change in the Perl language. Various releases of Perl are shepherded by a "pumpking", a porter responsible for gathering patches, deciding on a patch-by-patch, feature-by-feature basis what will and will not go into the release. For instance, Gurusamy Sarathy was the pumpking for the 5.6 release of Perl, and Jarkko Hietaniemi was the pumpking for the 5.8 release, and Rafael Garcia-Suarez holds the pumpking crown for the 5.10 release.
In addition, various people are pumpkings for different things. For instance, Andy Dougherty and Jarkko Hietaniemi did a grand job as the Configure pumpkin up till the 5.8 release. For the 5.10 release H.Merijn Brand took over.
Larry sees Perl development along the lines of the US government: theres the Legislature (the porters), the Executive branch (the pumpkings), and the Supreme Court (Larry). The legislature can discuss and submit patches to the executive branch all they like, but the executive branch is free to veto them. Rarely, the Supreme Court will side with the executive branch over the legislature, or the legislature over the executive branch. Mostly, however, the legislature and the executive branch are supposed to get along and work out their differences without impeachment or court cases.
You might sometimes see reference to Rule 1 and Rule 2. Larrys power as Supreme Court is expressed in The Rules:
Larry is always by definition right about how Perl should behave. This means he has final veto power on the core functionality.
Larry is allowed to change his mind about any matter at a later date, regardless of whether he previously invoked Rule 1.
Got that? Larry is always right, even when he was wrong. Its rare to see either Rule exercised, but they are often alluded to.
New features and extensions to the language are contentious, because the criteria used by the pumpkings, Larry, and other porters to decide which features should be implemented and incorporated are not codified in a few small design goals as with some other languages. Instead, the heuristics are flexible and often difficult to fathom. Here is one persons list, roughly in decreasing order of importance, of heuristics that new features have to be weighed against:
Does concept match the general goals of Perl?
These havent been written anywhere in stone, but one approximation is:
1. Keep it fast, simple, and useful.
2. Keep features/concepts as orthogonal as possible.
3. No arbitrary limits (platforms, data sizes, cultures).
4. Keep it open and exciting to use/patch/advocate Perl everywhere.
5. Either assimilate new technologies, or build bridges to them.
Where is the implementation?
All the talk in the world is useless without an implementation. In almost every case, the person or people who argue for a new feature will be expected to be the ones who implement it. Porters capable of coding new features have their own agendas, and are not available to implement your (possibly good) idea.
Backwards compatibility
Its a cardinal sin to break existing Perl programs. New warnings are contentious--some say that a program that emits warnings is not broken, while others say it is. Adding keywords has the potential to break programs, changing the meaning of existing token sequences or functions might break programs.
Could it be a module instead?
Perl 5 has extension mechanisms, modules and XS, specifically to avoid the need to keep changing the Perl interpreter. You can write modules that export functions, you can give those functions prototypes so they can be called like built-in functions, you can even write XS code to mess with the runtime data structures of the Perl interpreter if you want to implement really complicated things. If it can be done in a module instead of in the core, its highly unlikely to be added.
Is the feature generic enough?
Is this something that only the submitter wants added to the language, or would it be broadly useful? Sometimes, instead of adding a feature with a tight focus, the porters might decide to wait until someone implements the more generalized feature. For instance, instead of implementing a "delayed evaluation" feature, the porters are waiting for a macro system that would permit delayed evaluation and much more.
Does it potentially introduce new bugs?
Radical rewrites of large chunks of the Perl interpreter have the potential to introduce new bugs. The smaller and more localized the change, the better.
Does it preclude other desirable features?
A patch is likely to be rejected if it closes off future avenues of development. For instance, a patch that placed a true and final interpretation on prototypes is likely to be rejected because there are still options for the future of prototypes that havent been addressed.
Is the implementation robust?
Good patches (tight code, complete, correct) stand more chance of going in. Sloppy or incorrect patches might be placed on the back burner until the pumpking has time to fix, or might be discarded altogether without further notice.
Is the implementation generic enough to be portable?
The worst patches make use of a system-specific features. Its highly unlikely that nonportable additions to the Perl language will be accepted.
Is the implementation tested?
Patches which change behaviour (fixing bugs or introducing new features) must include regression tests to verify that everything works as expected. Without tests provided by the original author, how can anyone else changing perl in the future be sure that they havent unwittingly broken the behaviour the patch implements? And without tests, how can the patchs author be confident that his/her hard work put into the patch wont be accidentally thrown away by someone in the future?
Is there enough documentation?
Patches without documentation are probably ill-thought out or incomplete. Nothing can be added without documentation, so submitting a patch for the appropriate manpages as well as the source code is always a good idea.
Is there another way to do it?
Larry said "Although the Perl Slogan is Theres More Than One Way to Do It, I hesitate to make 10 ways to do something". This is a tricky heuristic to navigate, though--one mans essential addition is another mans pointless cruft.
Does it create too much work?
Work for the pumpking, work for Perl programmers, work for module authors, ... Perl is supposed to be easy.
Patches speak louder than words
Working code is always preferred to pie-in-the-sky ideas. A patch to add a feature stands a much higher chance of making it to the language than does a random feature request, no matter how fervently argued the request might be. This ties into "Will it be useful?", as the fact that someone took the time to make the patch demonstrates a strong desire for the feature.
If youre on the list, you might hear the word "core" bandied around. It refers to the standard distribution. "Hacking on the core" means youre changing the C source code to the Perl interpreter. "A core module" is one that ships with Perl.
<<lessThis document attempts to explain how Perl development takes place, and ends with some suggestions for people wanting to become bona fide porters.
The perl5-porters mailing list is where the Perl standard distribution is maintained and developed. The list can get anywhere from 10 to 150 messages a day, depending on the heatedness of the debate. Most days there are two or three patches, extensions, features, or bugs being discussed at a time.
A searchable archive of the list is at either:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/
or
http://archive.develooper.com/perl5-porters@perl.org/
List subscribers (the porters themselves) come in several flavours. Some are quiet curious lurkers, who rarely pitch in and instead watch the ongoing development to ensure theyre forewarned of new changes or features in Perl. Some are representatives of vendors, who are there to make sure that Perl continues to compile and work on their platforms. Some patch any reported bug that they know how to fix, some are actively patching their pet area (threads, Win32, the regexp engine), while others seem to do nothing but complain. In other words, its your usual mix of technical people.
Over this group of porters presides Larry Wall. He has the final word in what does and does not change in the Perl language. Various releases of Perl are shepherded by a "pumpking", a porter responsible for gathering patches, deciding on a patch-by-patch, feature-by-feature basis what will and will not go into the release. For instance, Gurusamy Sarathy was the pumpking for the 5.6 release of Perl, and Jarkko Hietaniemi was the pumpking for the 5.8 release, and Rafael Garcia-Suarez holds the pumpking crown for the 5.10 release.
In addition, various people are pumpkings for different things. For instance, Andy Dougherty and Jarkko Hietaniemi did a grand job as the Configure pumpkin up till the 5.8 release. For the 5.10 release H.Merijn Brand took over.
Larry sees Perl development along the lines of the US government: theres the Legislature (the porters), the Executive branch (the pumpkings), and the Supreme Court (Larry). The legislature can discuss and submit patches to the executive branch all they like, but the executive branch is free to veto them. Rarely, the Supreme Court will side with the executive branch over the legislature, or the legislature over the executive branch. Mostly, however, the legislature and the executive branch are supposed to get along and work out their differences without impeachment or court cases.
You might sometimes see reference to Rule 1 and Rule 2. Larrys power as Supreme Court is expressed in The Rules:
Larry is always by definition right about how Perl should behave. This means he has final veto power on the core functionality.
Larry is allowed to change his mind about any matter at a later date, regardless of whether he previously invoked Rule 1.
Got that? Larry is always right, even when he was wrong. Its rare to see either Rule exercised, but they are often alluded to.
New features and extensions to the language are contentious, because the criteria used by the pumpkings, Larry, and other porters to decide which features should be implemented and incorporated are not codified in a few small design goals as with some other languages. Instead, the heuristics are flexible and often difficult to fathom. Here is one persons list, roughly in decreasing order of importance, of heuristics that new features have to be weighed against:
Does concept match the general goals of Perl?
These havent been written anywhere in stone, but one approximation is:
1. Keep it fast, simple, and useful.
2. Keep features/concepts as orthogonal as possible.
3. No arbitrary limits (platforms, data sizes, cultures).
4. Keep it open and exciting to use/patch/advocate Perl everywhere.
5. Either assimilate new technologies, or build bridges to them.
Where is the implementation?
All the talk in the world is useless without an implementation. In almost every case, the person or people who argue for a new feature will be expected to be the ones who implement it. Porters capable of coding new features have their own agendas, and are not available to implement your (possibly good) idea.
Backwards compatibility
Its a cardinal sin to break existing Perl programs. New warnings are contentious--some say that a program that emits warnings is not broken, while others say it is. Adding keywords has the potential to break programs, changing the meaning of existing token sequences or functions might break programs.
Could it be a module instead?
Perl 5 has extension mechanisms, modules and XS, specifically to avoid the need to keep changing the Perl interpreter. You can write modules that export functions, you can give those functions prototypes so they can be called like built-in functions, you can even write XS code to mess with the runtime data structures of the Perl interpreter if you want to implement really complicated things. If it can be done in a module instead of in the core, its highly unlikely to be added.
Is the feature generic enough?
Is this something that only the submitter wants added to the language, or would it be broadly useful? Sometimes, instead of adding a feature with a tight focus, the porters might decide to wait until someone implements the more generalized feature. For instance, instead of implementing a "delayed evaluation" feature, the porters are waiting for a macro system that would permit delayed evaluation and much more.
Does it potentially introduce new bugs?
Radical rewrites of large chunks of the Perl interpreter have the potential to introduce new bugs. The smaller and more localized the change, the better.
Does it preclude other desirable features?
A patch is likely to be rejected if it closes off future avenues of development. For instance, a patch that placed a true and final interpretation on prototypes is likely to be rejected because there are still options for the future of prototypes that havent been addressed.
Is the implementation robust?
Good patches (tight code, complete, correct) stand more chance of going in. Sloppy or incorrect patches might be placed on the back burner until the pumpking has time to fix, or might be discarded altogether without further notice.
Is the implementation generic enough to be portable?
The worst patches make use of a system-specific features. Its highly unlikely that nonportable additions to the Perl language will be accepted.
Is the implementation tested?
Patches which change behaviour (fixing bugs or introducing new features) must include regression tests to verify that everything works as expected. Without tests provided by the original author, how can anyone else changing perl in the future be sure that they havent unwittingly broken the behaviour the patch implements? And without tests, how can the patchs author be confident that his/her hard work put into the patch wont be accidentally thrown away by someone in the future?
Is there enough documentation?
Patches without documentation are probably ill-thought out or incomplete. Nothing can be added without documentation, so submitting a patch for the appropriate manpages as well as the source code is always a good idea.
Is there another way to do it?
Larry said "Although the Perl Slogan is Theres More Than One Way to Do It, I hesitate to make 10 ways to do something". This is a tricky heuristic to navigate, though--one mans essential addition is another mans pointless cruft.
Does it create too much work?
Work for the pumpking, work for Perl programmers, work for module authors, ... Perl is supposed to be easy.
Patches speak louder than words
Working code is always preferred to pie-in-the-sky ideas. A patch to add a feature stands a much higher chance of making it to the language than does a random feature request, no matter how fervently argued the request might be. This ties into "Will it be useful?", as the fact that someone took the time to make the patch demonstrates a strong desire for the feature.
If youre on the list, you might hear the word "core" bandied around. It refers to the standard distribution. "Hacking on the core" means youre changing the C source code to the Perl interpreter. "A core module" is one that ships with Perl.
Download (12.2MB)
Added: 2007-05-30 License: Perl Artistic License Price:
881 downloads
slash 2.2.6
slash is a database-driven news and message board, using mod_perl and MySQL. more>>
Slashcode is the site for All Things Slash. Slash is the source code and database that was originally used to create Slashdot, and has now been released under the GNU General Public License.
It is a bona fide Open Source / Free Software project. Use this site to get the Slash source, read the latest Slash news, and participate in Slash discussions.
Slashcode is run by the good folks at OSDN, but like all good open source projects, depends on the community. Thanks for your continued support, and let us know what we can do to make the site better.
Slash and Slashcode could not be possible without the use of some great Open Source software.
<<lessIt is a bona fide Open Source / Free Software project. Use this site to get the Slash source, read the latest Slash news, and participate in Slash discussions.
Slashcode is run by the good folks at OSDN, but like all good open source projects, depends on the community. Thanks for your continued support, and let us know what we can do to make the site better.
Slash and Slashcode could not be possible without the use of some great Open Source software.
Download (0.57MB)
Added: 2005-05-05 License: GPL (GNU General Public License) Price:
1632 downloads
parp 0.62
parp is a powerful, extensible e-mail filter with sophisticated anti-spam capabilities. more>>
parp is a powerful, extensible e-mail filter with sophisticated anti-spam capabilities. Its made as a complete replacement for procmail, is MIME-aware, and acts as a filter, daemon, or on mailboxes.
This was yet another personal itch which needed scratching. I receive between 5 and 20 spam e-mails most days. It wasnt only mildly annoying to have to hit delete more than normal, but I also forward all e-mail which ends up in my main inbox to my mobile (cell) phone via email2sms and an Internet/SMS gateway, and I was sick to death of my phone bleeping a lot through the day purely due to junk mail.
I started looking at all the available anti-spam filters. Over a period of two years, I looked at many, including the NAGS filter, despam, various complex anti-spam procmailrcs, the spamometer, blackmail, filter.plx, zfilter, spamstop, junkfilter ... but various things put me off all of them:
Some werent written in Perl. Call me a Perl bigot, but if there was ever a case of Perl being the right tool for the job, its an e-mail filter. Extensibility and maintainability were very high on my list.
Some were terribly coded. I refuse to put my e-mail at the mercies of bad code (and that includes sendmail ;-).
Some insisted that you use a particular MDA or MUA. I have no intentions of changing from mutt and qmail.
Many filtered on only the headers, or only the body. I want to filter on both, not all the time, but in some circumstances.
None were as accurate as I wanted. My goal was at least 99% accuracy. (At the time of writing, parps accuracy is hovering around the 99.8% mark.)
Main features:
- Can act as a filter in a similar manner to procmail, or directly on files in Mbox format (and possibly other formats via Mail::Box - untested), or as a daemon processing mails from a spool. In the latter case, mails are injected into the queue via a tiny (15k on my system) executable which handles locking correctly.
- Standard filtering actions are available (deliver to mailbox, pipe to command, reject as junk etc.)
- Highly sophisticated spam detection heuristics: currently around 40 different tests performed in a worst case scenario, although all tests optimised for speed (e.g. fast tests performed on headers, then slower tests only performed on body if necessary). N.B. Im considering incorporating the SpamAssassin ruleset at some point too.
- Optional cross-checking with the Open Relay Database.
- Filter adds X-Parp-Accepted: and X-Parp-Rejected: headers so that you can easily monitor its filtering strategy without leaving your mail reader.
- MIME multi-part aware, e.g. will not be confused by binary attachments.
- Berkeley DB format friends database, for keeping false positives to an absolute minimum.
- Automatic extraction of addresses into the friends database from emails which pass the spam tests. Semi-automatic removal of addresses from the friends database on the rare occasions parp gets it wrong. The friends database is also easily editable with my dbm utility.
- Other `grace tests allowing bona fide persons communications through (e.g. passworded e-mails) just in case all the other tests go badly wrong.
- The configuration files are written in raw Perl, so you can extend the filter arbitrarily using the main programs API.
- Comprehensive logging and error-trapping systems.
- Auxiliary program to print out comprehensive statistics on all aspects of filtering (see the sample output).
- Ability to log false positives/negatives when spam detection has gone wrong in a way which can be interpreted by the statistics program to determine the filters current accuracy of spam detection.
- Mostly RFC822-compliant state machine parser of Received headers, enabling extensive spam trace analysis and retaliative action. Read its man page or source if youre curious.
- Duplicate removals (by message id).
- Emails which have already been filtered can be used as regression tests, to easily spot problems when you make changes to your filtering logic.
Version restrictions:
- Limited documentation so far. This is gradually improving.
- Requires some knowledge of Perl / programming. (Ironically, if it didnt, there would be far greater limitations to the filters flexibility.)
<<lessThis was yet another personal itch which needed scratching. I receive between 5 and 20 spam e-mails most days. It wasnt only mildly annoying to have to hit delete more than normal, but I also forward all e-mail which ends up in my main inbox to my mobile (cell) phone via email2sms and an Internet/SMS gateway, and I was sick to death of my phone bleeping a lot through the day purely due to junk mail.
I started looking at all the available anti-spam filters. Over a period of two years, I looked at many, including the NAGS filter, despam, various complex anti-spam procmailrcs, the spamometer, blackmail, filter.plx, zfilter, spamstop, junkfilter ... but various things put me off all of them:
Some werent written in Perl. Call me a Perl bigot, but if there was ever a case of Perl being the right tool for the job, its an e-mail filter. Extensibility and maintainability were very high on my list.
Some were terribly coded. I refuse to put my e-mail at the mercies of bad code (and that includes sendmail ;-).
Some insisted that you use a particular MDA or MUA. I have no intentions of changing from mutt and qmail.
Many filtered on only the headers, or only the body. I want to filter on both, not all the time, but in some circumstances.
None were as accurate as I wanted. My goal was at least 99% accuracy. (At the time of writing, parps accuracy is hovering around the 99.8% mark.)
Main features:
- Can act as a filter in a similar manner to procmail, or directly on files in Mbox format (and possibly other formats via Mail::Box - untested), or as a daemon processing mails from a spool. In the latter case, mails are injected into the queue via a tiny (15k on my system) executable which handles locking correctly.
- Standard filtering actions are available (deliver to mailbox, pipe to command, reject as junk etc.)
- Highly sophisticated spam detection heuristics: currently around 40 different tests performed in a worst case scenario, although all tests optimised for speed (e.g. fast tests performed on headers, then slower tests only performed on body if necessary). N.B. Im considering incorporating the SpamAssassin ruleset at some point too.
- Optional cross-checking with the Open Relay Database.
- Filter adds X-Parp-Accepted: and X-Parp-Rejected: headers so that you can easily monitor its filtering strategy without leaving your mail reader.
- MIME multi-part aware, e.g. will not be confused by binary attachments.
- Berkeley DB format friends database, for keeping false positives to an absolute minimum.
- Automatic extraction of addresses into the friends database from emails which pass the spam tests. Semi-automatic removal of addresses from the friends database on the rare occasions parp gets it wrong. The friends database is also easily editable with my dbm utility.
- Other `grace tests allowing bona fide persons communications through (e.g. passworded e-mails) just in case all the other tests go badly wrong.
- The configuration files are written in raw Perl, so you can extend the filter arbitrarily using the main programs API.
- Comprehensive logging and error-trapping systems.
- Auxiliary program to print out comprehensive statistics on all aspects of filtering (see the sample output).
- Ability to log false positives/negatives when spam detection has gone wrong in a way which can be interpreted by the statistics program to determine the filters current accuracy of spam detection.
- Mostly RFC822-compliant state machine parser of Received headers, enabling extensive spam trace analysis and retaliative action. Read its man page or source if youre curious.
- Duplicate removals (by message id).
- Emails which have already been filtered can be used as regression tests, to easily spot problems when you make changes to your filtering logic.
Version restrictions:
- Limited documentation so far. This is gradually improving.
- Requires some knowledge of Perl / programming. (Ironically, if it didnt, there would be far greater limitations to the filters flexibility.)
Download (0.058MB)
Added: 2006-07-08 License: Artistic License Price:
1205 downloads
Secleted [ 0 ] software to compare
- Page: 1 of 1
- 1
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above fide search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed