The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package # hide from CPAN
    Riemann::Client::Transport;

use Moo;
use Scalar::Util 'blessed';
use IO::Socket::INET;

has host   => (is => 'ro', required => 1);
has port   => (is => 'ro', required => 1);
has socket => (is => 'lazy', clearer => 1);

sub send {
    die 'Not implemented';
}

sub _build_socket {
    my $self  = shift;

    my @elems = split /::/, blessed $self;
    my $proto = $elems[-1];

    my $sock = IO::Socket::INET->new(
        PeerAddr => $self->host,
        PeerPort => $self->port,
        Proto    => $proto,
    ) or die $!;

    return $sock;
}

1;