in reply to Tk warning using curselection() with ActiveState 5.8.4

When you say that this "worked":
$what = $choices[$dialogLB->curselection];
I'd have to ask: in what sense did it "work"? That is, when you don't get the error in 5.8.0, what exactly do you get?

The "curselection" method is supposed to return a list (of zero, one or more elements, depending on what has been selecteed). If the listbox has "selectmode" set to "single" or "browse", you should get either zero or one element returned, but it still works like getting a list, not like getting a scalar.

If I'm guessing right about what your code is supposed to do when it works, the "correct" way would be like this:

( $what ) = @choices[$dialogLB->curselection]; # or maybe: @what = @choices[$dialogLB->curselection];
Note the list-context on the left side and "@choices" on the right in both. In the first case, if the listbox happens to have "selectmode" set to "multiple" or "extended", and the user has more than one element selected, only the first element will be assigned to $what. In the second case, @what will have all the selected items (if any). I wasn't able to test this on 5.8.4, but these alternatives do work on 5.8.0, 5.8.1 and 5.8.5.

I think the mystery here is why your original version "worked" in 5.8.0 -- IMHO, that would have been unexpected, and was probably a bug that got fixed.