Interesting Error - Can't use string ("1909") as an ARRAY ref while "strict refs" in use

Julian Field MailScanner at
Sat Mar 7 16:01:26 GMT 2009

Okay, try changing the line to these two lines:

     my $line = int(scalar(@{$body})-1;
     while (${@{$body}}[$line] !~ /^\s*$/) {

This really is a bug in Perl. Every variable has a string value and a 
numeric value, depending on context. So $a[1909] should equal 
$a["1909"]. But in this case it's using the string value, which it can't 
use, and not the numeric value, which it can.

On 3/7/09 11:57 AM, Drew Marshall wrote:
> On 6 Mar 2009, at 19:55, Julian Field wrote:
>> If it's complaining that int(1909) cannot be used as an array ref, 
>> then there's not a whole lot I can do.
> :-(
>> You could try changing the line to
>>   while (${@{$body}}[int(scalar(@{$body})-1)+0] !~ /^\s*$/) {
>> (i.e. add a "+0" to it) but there really isn't much more I can do.
>> Try the +0 and let me know if it helps at all.
> Can't use string ("18") as an ARRAY ref while "strict refs" in use at 
> /usr/share/MailScanner//MailScanner/ line 509.
>> This is a nasty Perl bug.
> :-((
> Am I the only MailScanner user who has tried to get MS working on 
> Unbuntu 8.10 Server? If so, then it's broken and don't bother trying 
> it. If not, then my install is borked (Which at least is better as I 
> can fix that!).
> Drew


Julian Field MEng CITP CEng
Buy the MailScanner book at

MailScanner customisation, or any advanced system administration help?
Contact me at Jules at Jules.FM

PGP footprint: EE81 D763 3DB0 0BFD E1DC 7222 11F6 5947 1415 B654
PGP public key:

This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

More information about the MailScanner mailing list