http://qs321.pair.com?node_id=11107607

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

This works:

› perl -MIO::Prompt=prompt -e'prompt -menu => [6..9]'

This does not (type letters and/or Enter key when prompted):

› perl -MIO::Prompter=prompt -e'prompt -menu => [6..9]'

Can you repro?

Replies are listed 'Best First'.
Re: weird bug with IO::Prompter, prompt spells out the word 'prompt'
by Corion (Patriarch) on Oct 17, 2019 at 15:41 UTC

    This seems to be a bug in the weird, custom import subroutine of IO::Prompter because it works when used in the traditional fashion:

    perl -e'use IO::Prompter; prompt -menu => [6..9]'

    The custom import subroutine takes the second argument given to it as fake input:

    # Export the prompt() sub... sub import { my (undef, $config_data, @other_args) = @_; # ... if( 0 ) { # other options that do not apply # Handler faked input specifications... elsif (defined $config_data) { $fake_input = $config_data; } }

    I don't understand why @_ is not as expected for it, but the code path triggered is the one for fake input data as in:

    perl -e'use IO::Prompter 'fake'; prompt( -menu => [6..9] )'

    ... which provides the fake input fake.

    Right after posting I understand. The custom export subroutine does not take the name of the subroutine to export! Just leaving out the prompt makes things work:

    perl -MIO::Prompter -e'prompt -menu => [6..9]'
Re: weird bug with IO::Prompter, prompt spells out the word 'prompt'
by Fletch (Bishop) on Oct 17, 2019 at 15:15 UTC

    Not just you. Reproduced with the stock OS X install of 5.18.2 and IO::Prompter 0.004015.

    Update: Also seeing with 5.26.2 on RHEL6 and IO::Prompter 0.004014.

    The cake is a lie.
    The cake is a lie.
    The cake is a lie.