This queue is for tickets about the IO-Prompt CPAN distribution.

Report information
The Basics
Id:
36221
Status:
new
Priority:
Low/Low
Queue:

People
Owner:
Nobody in particular
Requestors:
Rafael.Barros [...] locaweb.com.br
Cc:
AdminCc:

BugTracker
Severity:
(no value)
Broken in:
(no value)
Fixed in:
(no value)



Subject: Possible Bug
Date: Tue, 27 May 2008 16:07:09 -0300
To: <bug-IO-Prompt@rt.cpan.org>
From: "Rafael Barros" <Rafael.Barros@locaweb.com.br>

Message body not shown because it is not plain text.

Hello,
 
I don't know if this is really a bug, but I have installed IO::Prompt on a Fedora 8 machine, and every call to prompt() with the -r option specified would trigger a warning:
 
Use of uninitialized value in pattern match (m//) at /usr/lib/perl5/site_perl/5.8.8/IO/Prompt.pm line 91.
the problem is shown when I try to execute the following code:
prompt( "Some message: ", -r => { "put something here>" => qr/\w+/ });
 
I looked into the code to see what was happenning, and found out that the problem was in this segment of code, in the file mentioned above:
    @data = map { $flags_alias{$_} || $_ } @data;
    for (my $i = 0 ; $i < @data ; $i++) {
        local *_ = \($data[$i]);
        if (ref eq 'HASH') {
            splice @data, $i + 1, 0, %$_;
        }
 

the problem is that, when splice is called in -r, two arguments of @data are removed from the array. If this is the last argument, the array becomes empty and $_ gets the value undef in the next iteration. When the code does ref eq 'HASH' again, the warning is sent.
 
I think that only changing the if clause to be defined $_ and ref eq 'HASH' would resolve the problem.
 
Ah, my version of IO::Prompt is 0.99.4. My Fedora has the kernel 2.6.24.7-92.fc8 and my perl is 5.8.8.
 
Thanks,
Rafael Adson Barbosa Barros
 
 


This service runs on Request Tracker, is sponsored by The Perl Foundation, and maintained by Best Practical Solutions.

Please report any issues with rt.cpan.org to rt-cpan-admin@bestpractical.com.