On 1/26/07, Jen Spinney <[EMAIL PROTECTED]> wrote:
Hello list!

I apologize in advance for not posting a complete sample script that
shows my problem, but I can't isolate it outside of my (rather large)
perl application.

My problem is that I'm hit with a barrage of warnings that tell me I'm
using uninitialized values.  The first warning that occurs complains
of a "use of uninitialized value in string eq" at line 505 of my
script.  Line 505 (I've triple-checked the line number and the correct
source) reads:

if ($exploit_name eq 'ALL') # <-- line 505

I had no idea how $exploit_name could be undefined, so I added the
following two statements right before the if statement:

print "\$exploit_name is not any sort of false\n" if $exploit_name;
print "String literal is not any sort of false\n" if 'ALL';
if ($exploit_name eq 'ALL') # <-- now line 507

To see what you really got at $exploit_name, use Data::Dumper,
Data::Dump or any of your favourite dumpers:

   use Data::Dump qw(dump);
   print "\$exploit_name =", dump($exploit_name), "\n";

In some circumstances, the line of the warning may be wrong. So the
problem can be around line 507 instead of exactly there.

I originally only check if the two strings were defined, but then I
read in perldiag that "An undefined value was used as if it were
already defined. It was interpreted as a "" or a 0, but maybe it was a
mistake. To suppress this warning assign a defined value to your
variables."  So, to be safe, I verified that neither $exploit_name nor
'ALL' could be any kind of false value.

But still, this is my output:

$exploit_name is not any sort of false
String literal is not any sort of false
[*] WARNING: Use of uninitialized value in string eq at spinsploit.pl
line 507, <STDIN> line 2.

The '[*] WARNING: " bit comes from a module I'm using, which catches
SIG{__WARN__} and just prepends that string.  I stepped through the
module's warning catcher with the debugger, and it was definitely sent
"Use of uninitialized value in string eq at spinsploit.pl line 507,
<STDIN> line 2." as a $_[0] value.  I don't see how it could affect
the warning it was sent.

How is this possible?  Any suggestions of other tests I could print
the output of or things to step through with the debugger?

- Jen

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/




--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to