in reply to array & tcp socket

It is actually better to use udp for this kind of purpose, but tcp is also fine. All what you needed is a way to serialize your data, as others pointed out, you can use Storable.

Write up some example code for you, hope this helps:

client: use Storable qw(freeze); use IO::Socket; use strict; use warnings; my $c = new IO::Socket::INET(Proto => "tcp", PeerAddr => "localhost", PeerPort => 3000, Timeout => 1); =document my $c = new IO::Socket::INET(Proto => "udp", PeerAddr => "localhost", PeerPort => 3000, Timeout => 1); =cut print "Connected\n"; my $arr = [1,2,3,4,5,6,7,8,9,10]; my $arr_freezed = freeze($arr); $c->send($arr_freezed); my $answer; $c->recv($answer, 1000); close $c; print $answer; server: use IO::Socket; use Storable qw(thaw); use strict; use warnings; =document my $server = new IO::Socket::INET(Timeout => 7200, Proto => "udp", LocalPort => 3000, LocalHost => "localhost"); =cut my $vserver = new IO::Socket::INET(Timeout => 7200, Proto => "tcp", LocalPort => 3000, Listen => 2, LocalHost => "localhost"); print "Server is listening for connection ...\n"; my $server = $vserver->accept(); my $arr_freezed; $server->recv($arr_freezed, 1000); my @arr = @{thaw($arr_freezed)}; my $total = 0; for (@arr) { $total += $_; } $server->send($total); close $server; print "Connection closed\n";