use Socket;
BEGIN {
*CORE::GLOBAL::connect = sub(*$) {
my ($socket, $name) = @_;
return CORE::connect($socket, $name) if (scalar(caller 2) eq 'IO::Socket::Socks');
my ($port, $host) = sockaddr_in($name);
$host = inet_ntoa($host);
$_[0] = IO::Socket::Socks->new(
ProxyAddr => 'localhost',
ProxyPort => 1080,
SocksVersion => 5,
ConnectAddr => $host,
ConnectPort => $port,
SocksDebug => 1
) or return undef;
return 1;
}
}
use IO::Socket::Socks;
####
my $remote = "perlmonks.org";
my $port = 80;
my $iaddr = inet_aton($remote) || die "no host: $remote";
my $paddr = sockaddr_in($port, $iaddr);
my $proto = getprotobyname('tcp');
socket(my $sock, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
connect($sock, $paddr);
syswrite($sock, "GET / HTTP/1.0\r\n");
close $sock;
####
my $sock = IO::Socket::INET->new('perlmonks.org:80')
or die $@;
$sock->syswrite("GET / HTTP/1.0\r\n");
$sock->close();