BEGIN { *CORE::GLOBAL::connect = sub(*$) { my ($socket, $name) = @_; return CORE::connect($socket, $name) if ref($socket) eq 'IO::Socket::Foo'; $_[0] = IO::Socket::Foo->new('perlmonks.org:80') or return undef; return 1; } } package IO::Socket::Foo; use IO::Socket::INET; use base "IO::Socket::INET"; package main; $SIG{PIPE} = sub { die "Broken pipe!\n" }; my $sock = IO::Socket::INET->new('perlmonks.org:80') or die $@; print "\$sock is: $sock\n"; $sock->syswrite("GET / HTTP/1.0\r\n"); $sock->close();