use Socket qw(IPPROTO_TCP TCP_NODELAY); sub nagle(*;$) { my $fh = shift; if (!@_) { return unpack("I", getsockopt($fh, IPPROTO_TCP, TCP_NODELAY) || croak "Could not get Nagle state: $!") ? 0 : 1; } if (shift) { setsockopt($fh, IPPROTO_TCP, TCP_NODELAY, 0) || croak "Couldn't enable Nagle's algorithm: $!"; } else { setsockopt($fh, IPPROTO_TCP, TCP_NODELAY,1) || croak "Couldn't disable Nagle's algorithm: $!"; } }