Yes, you can use select() as well, which is a more traditional
way, since with one call you can check on a large number
of sockets simultaneously. If you want to use this,
which isn't a bad idea, you might as well use
IO::Select instead of the regular one, seeing as how you
are using IO::Socket. See the documentation page by clicking
on that link, as it contains a useful example.
Comment on Re^3: Check for request from UDP client