############################################################ # # Perl Extension for LRC computations # Author...: Ralph Padron (whoelse@elitedigital.net) # Revised..: 01-May-2002 # # The Longitudinal Redundancy Check (LRC) is a one byte character, # commonly used as a field in data transmission over analog systems. # # Most commonly, in STX-ETX bounded strings sent in financial protocols. # # Following some previous experience with such protocols, I wrote # an LRC function in perl and later decided to re-write in C # for efficiency. The result is this module String::LRC # # NOTE: # Included sv_type comparison and lrcinit in v1.01 # following the idea by Soenke J. Peters and others # that someone perhaps can use the LRC of a file. # # ############################################################ package String::LRC; require Exporter; require DynaLoader; @String::LRC::ISA = qw(Exporter DynaLoader); $String::LRC::VERSION = 1.01; @String::LRC::EXPORT = qw(lrc); # Export lrc() by default # Export the default and the old LRC function I had as a simple perl subroutine # from v1.00 of this package @String::LRC::EXPORT_OK = qw(lrc getPerlLRC); sub getPerlLRC { my $buffer = shift(@_); my @str = split(//,$buffer); my $len = 0; $len = length($buffer) if (defined $buffer && $buffer ne ""); no warnings; # for XOR on non-numeric (sometimes shows for me) my $check; for (my $i = 0; $i < $len ; $i++) { $check = $check ^ $str[$i]; } return $check; } bootstrap String::LRC; 1;