Paul, метод send пакета IO::Socket является фронтэндом для встроенной ф-ии CORE::send - так в мане и написано. В описании CORE::send указано, что буфер - это скаляр.
Метод IO::Socket::send, судя по описанию, принимает переменное число параметров, а след. есть списковая ф-ия (без прототипа). Соотв., значения из массива образовали список скаляров: первое значение вместо BUF, второе вместо FLAGS, третье - TO, а остальные - лишние.
Это код метода из библиотеки perl-а.
sub send {
@_ >= 2 && @_ <= 4 or croak 'usage: $sock->send(BUF, [FLAGS, [TO]])';
my $sock = $_[0];
my $flags = $_[2] || 0;
my $peer = $_[3] || $sock->peername;
croak 'send: Cannot determine peer address'
unless($peer);
my $r = defined(getpeername($sock))
? send($sock, $_[1], $flags)
: send($sock, $_[1], $flags, $peer);
# remember who we send to, if it was successful
${*$sock}{'io_socket_peername'} = $peer
if(@_ == 4 && defined $r);
$r;
}