Keyboard input/Obtain a Y or N response

func prompt_yn {
    static rk = frequire('Term::ReadKey')
    rk.ReadMode(4)     # change to raw input mode

    var key = ''
    while (key !~ /[yn]/i) {
        while (rk.ReadKey(-1) != nil) {}   # discard any previous input
        print "Type Y/N: "
        say (key = rk.ReadKey(0))          # read a single character
    }

    rk.ReadMode(0)     # reset the terminal to normal mode
    return key.uc
}

var key = prompt_yn()
say "You typed: #{key}"

Output:

Type Y/N: a
Type Y/N: b
Type Y/N: c
Type Y/N: y
You typed: Y