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

Rick Cooper rcooper at dwford.com
Sat Mar 7 16:41:13 GMT 2009


 

 > -----Original Message-----
 > From: mailscanner-bounces at lists.mailscanner.info 
 > [mailto:mailscanner-bounces at lists.mailscanner.info] On 
 > Behalf Of Rick Cooper
 > Sent: Saturday, March 07, 2009 11:30 AM
 > To: 'MailScanner discussion'
 > Subject: RE: Interesting Error - Can't use string ("1909") 
 > as an ARRAY refwhile "strict refs" in use
 > 
 >  
 > 
 >  > -----Original Message-----
 >  > From: mailscanner-bounces at lists.mailscanner.info 
 >  > [mailto:mailscanner-bounces at lists.mailscanner.info] On 
 >  > Behalf Of Ian McDonald
 >  > Sent: Saturday, March 07, 2009 7:43 AM
 >  > To: MailScanner discussion
 >  > Subject: Re: Interesting Error - Can't use string ("1909") 
 >  > as an ARRAY ref while "strict refs" in use
 >  > 
 >  > 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/PFDiskStore.pm line 509.
 >  > > 
 >  > >> This is a nasty Perl bug.
 >  > > 
 >  > > :-((
 >  > > 
 > [..]
 > 
 > Been looking at this and really have no way to test because 
 > I don't use
 > postfix but try changing
 > 
 >     while (${@{$body}}[scalar(@{$body})-1] !~ /^\s*$/) {
 >       print "Line is ****" . ${@{$body}}[scalar(@{$body})-1] 
 > . "****\n";
 >       pop @{$body};
 >       #print STDERR ".";
 >     }
 > 
 > TO
 > 


MAJOR Typo there, the pop @{$#Bodyref}; SHOULD BE pop @{$Bodyref};
Forgot to pull the # out when I copy pasted, sorry. 


 >     my $Bodyref = \@body;
 > 
 >     while (${@{$body}}[$#Bodyref] !~ /^\s*$/) {
 >       print "Line is ****" . ${@{$body}}[$#Bodyref] . "****\n";
 >       pop @{$#Bodyref};
 >       #print STDERR ".";
 >     }
 > 
 > 
 > 


--
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