UDP sockets don't block. It seems Win32 (or at least the perl you are using on Win32) doesn't, therefore, allow setting that attribute. Also, I tried your code and tried to use fcntl to check the blocking status of the socket. It seems that ActiveState has not defined the O_NONBLOCK value, at least not in 5.8.1.