perlquestion
marinersk
The questions will be:
<P>
<OL>
<LI>Why is this generating a diagnostic warning?
<LI>What can I do about it?
</OL>
<P>I've inherited a huge thing that uses lots of dbmopen() and dbmclose(). I know this is now superceded by tie(), but I'd like to understand what is going on before I decide to go changing things willy-nilly.
<P>The following snippet demonstrates something I'm running into when I turn on WARNINGS:
<P>
<TABLE>
<TR>
<TD> </TD>
<TD>
<code>
#!/usr/bin/perl -w
use strict;
my $TSTFNM = "test-dbm-data";
my $TSTACC = 0666;
my $opnret = dbmopen(my %TSTDBM, $TSTFNM, $TSTACC);
print "DBM Open: '$opnret'\n";
my $cloret = dbmclose(%TSTDBM);
exit;
__END__
</code>
</TD>
</TR>
</TABLE>
<P>I get the following results:
<P>
<TABLE>
<TR>
<TD> </TD>
<TD>
<code>
DBM Open: 'AnyDBM_File=SCALAR(0x1982e8c)'
<BR>untie attempted while 1 inner references still exist at D:\Steve\Dev\test-dbm.pl line 10.
</code>
</TD>
</TR>
</TABLE>
<P>If I take out the perl -w, no problems reported.
<P>
<OL>
<LI>Why is this generating a diagnostic warning?
<LI>What can I do about it?
</OL>
<P>I've poked around Google and done a search here at PerlMonks and I'm landing on neither a useful problem description nor a useful solution.
<P>So I thought I'd pray for divine intervention. :-)
<P>Many thanks for your time and assistance.
<P>- Steven K. Mariner