in reply to @_ still mystifies me

This works for me:

unless(@lexlist){@lexlist = sort keys %lexicon};

I think what you're missing is that you can't use "or" in that way, not what happens to @_.

UPDATE:

Here's my test to prove that @_ is not always evaluated to true:

&lex(); &lex(1,2,3); sub lex{ @lexlist = @_; if(@lexlist){ print "I got the lexlist, here it is: @lexlist \n" }else { print "where's the list?\n"; } }

Which answers your question. --

($_='jjjuuusssttt annootthheer pppeeerrrlll haaaccckkeer')=~y/a-z//s;print;