IO::Prompt is returning an instance of IO::Prompt::ReturnVal, not a plain scalar value. Apparently this instance isn't boolean-ifying the way you expect (not that I disagree with your expectation after a quick initial read of the docs) and since it's not false you always get your first leg of your if executing.
Update: As a workaround you can explicitly stringify return $ans . "" or numify it return $ans + 0 and it should behave the way you want. Alternately explicitly test the value (e.g. if( shall_we() == 1 ) { ... } else { ... }).
Another way: Since you're using 5.10 there's always given:
use feature qw( switch say ); ## ... as your code ... given( shall_we() ) { when (1) { print "In the 'if' statement: yes, we shall.\n"; } when (0) { print "In the 'if' statement: no, we shant.\n"; } };
The cake is a lie.
The cake is a lie.
The cake is a lie.
In reply to Re: IO::Prompt -- why isn't this working (menu with hashref)?
by Fletch
in thread IO::Prompt -- why isn't this working (menu with hashref)?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |