$listen is an option, an arg you can pass the new() method. It is supposed to be a listen socket.
From the book description of that API: "$set = IO::SessionSet->new([$listen])
Creates a new IO::SessionSet. If a listen socket is provided in $listen, then the module automatically accepts incoming connections"
Basically
$set = IO::SessionSet->new() ;
is the same as doing
$set = IO::SessionSet->new() ;
$set->add($listen);
Does that make sense to you? Good, then what he is doing is calling the
UNIVERSAL (as described above) to make sure that, if $listen exists, its a listening socket (although it can be other things too, see code on page 393 of the book) and if it is he calls his ->add method for you.
Update: Sorry, I misread the question and just got to it in a more roundabout way :)
"Nothing is sure but death and taxes" I say combine the two and its death to all taxes!