http://www.perlmonks.org?node_id=145238

Squiddhartha has asked for the wisdom of the Perl Monks concerning the following question:

Hello! First time poster here, so please be gentle if I transgress. Consider the following short piece of code:
#!/bin/perl use GDBM_File; # File 'voo' created with: #tie %DBM, GDBM_File, 'voo', &GDBM_WRCREAT, 0644; #$DBM{'goo'}='moo'; #untie %DBM; sub DBMopenread { $DBREFread=tie %DBM, GDBM_File, $_[0], &GDBM_READER, 0644; } sub DBMcloseread { $DBREFread = undef; untie %DBM; } &DBMopenread('voo'); #$DBREFread=tie %DBM, GDBM_File, 'voo', &GDBM_READER, 0644; $m=$DBM{'goo'}; print "$m\n"; &DBMcloseread("voo");
When run with the &DBMopenread call, under both Linux and Solaris, I see (the appropriate version of) this message:
Argument "voo" isn't numeric in subroutine entry at /opt/perl/lib/5.6. +1/sun4-solaris/GDBM_File.pm line 69.
However, if I comment out the &DBMopenread call and just use the direct tie statement... no errors. Can anyone shed light on this strange situation? I'm trying to eliminate some Apache error_log messages. Thank you!