Re: binding multiple values and retain blanks

From: Marc M. Adkins (Marc.M.Adkins_at_Doorways.org)
Date: 10/23/04


To: DBI-Users <dbi-users@perl.org>
Date: Sat, 23 Oct 2004 06:22:12 -0400



> On Wed, Oct 13, 2004 at 04:33:14PM -0400, Marc M. Adkins wrote:
> > I have been getting an annoying warning about dereferencing
> an unreferenced
> > scalar. Sometimes it comes out in such a way that it
> misses $SIG{__WARN__}
> > redirection. After much trial and error I tracked it down, sort of.
> >
> > Here's the punch line: it doesn't happen unless I use
> fetchall_hashref().
>
> It's fixed in the (as yet unannounced) DBI 1.45 release.

Yesterday (10/22) I found that ActiveState had updated their PPM repository
and I downloaded and installed DBI 1.45:

ppm> query DBI
Querying target 1 (ActivePerl 5.8.4.810)
  1. DBI [1.45] Database independent interface for Perl
ppm> query DBD-ODBC
Querying target 1 (ActivePerl 5.8.4.810)
  1. DBD-ODBC [1.11] ODBC Driver for DBI
ppm>

Unfortunately, my test program (attached, same as previous version) is still
saying the same thing (two runs, second demonstrates problem):

D:\CaseLaw>c:\temp\unref.pl
Step 1: Database query
     16392: db_denydatareader
     16393: db_denydatawriter
         3: INFORMATION_SCHEMA
     16384: db_owner
         2: guest
     16390: db_datareader
     16385: db_accessadmin
     16389: db_backupoperator
         1: dbo
         4: system_function_schema
     16391: db_datawriter
         0: public
     16386: db_securityadmin
     16387: db_ddladmin
         5: servman
Step 2: Copy files
  Copied readme.txt
  Copied shortcut.cpp
  Copied SHORTCUT.DEF
  Copied Shortcut.MAK
  Copied Shortcut300.MAK

D:\CaseLaw>c:\temp\unref.pl 1
Step 1: Database query
     16392: db_denydatareader
     16393: db_denydatawriter
         3: INFORMATION_SCHEMA
     16384: db_owner
         2: guest
     16390: db_datareader
     16385: db_accessadmin
     16389: db_backupoperator
         1: dbo
         4: system_function_schema
     16391: db_datawriter
         0: public
     16386: db_securityadmin
     16387: db_ddladmin
         5: servman
Step 2: Copy files
Attempt to free unreferenced scalar: SV 0x1c6ca04 at
C:/Perl/lib/File/Copy.pm line 91.
  Copied readme.txt
Attempt to free unreferenced scalar: SV 0x1c66d9c at
C:/Perl/lib/File/Copy.pm line 91.
  Copied shortcut.cpp
Attempt to free unreferenced scalar: SV 0x1c66dfc at
C:/Perl/lib/File/Copy.pm line 91.
  Copied SHORTCUT.DEF
Attempt to free unreferenced scalar: SV 0x1c6e89c at
C:/Perl/lib/File/Copy.pm line 91.
  Copied Shortcut.MAK
Attempt to free unreferenced scalar: SV 0x1c6e8a8 at
C:/Perl/lib/File/Copy.pm line 91.
  Copied Shortcut300.MAK

D:\CaseLaw>

This is Windows 2000, ActiveState Perl 5.8.4. I didn't think to check the
version of File::Copy. But the problem is connected somehow to (non-)use of
fetchall_hashref().

Is there anything I can do to test this further that doesn't require a C
compiler / debugger? We aren't provided with those tools (or the time to use
them) at work and I don't have a working Windows system at home any more.

This is not a showstopper for me. I've already modified all of my code to
avoid fetchall_hashref(). Well, almost all of my code, I still see the error
from time to time so I must have missed something somewhere...

mma