Well I had reduced my message down to just "Ahh" and found that was the cause of the error. So the code reports:
Checking $VAR1 = [ 'ahh' ];
I did a little more checking and it looks as though it might be trying to sysseek to a negative position and my version of perl doesn't like that (v5.6.1 built for i386-freebsd), although I'm not really sure. You could confirm that by print out the value of (current * record_size) in between these lines.
$current--;
sysseek $self->{SOUNDEX}, ($current * $record_size), 0;
The same runs fine on my local machine, but not on my freebsd box.
Checking $VAR1 = [ 'ahh' ];
I did a little more checking and it looks as though it might be trying to sysseek to a negative position and my version of perl doesn't like that (v5.6.1 built for i386-freebsd), although I'm not really sure. You could confirm that by print out the value of (current * record_size) in between these lines.
$current--;
sysseek $self->{SOUNDEX}, ($current * $record_size), 0;
The same runs fine on my local machine, but not on my freebsd box.