perl atj@pulsewidth.org.uk Adam James IO-BufferedSelect