Your client is fine (and most of your 'server' too).
Using Data::Dumper, I very quickly found out that
$storage (actually $_) is not defined the way you tried. Why don't you try something like this:
my $new_sock = $sock->accept();
while (my $storage = <$new_sock>) {
print $storage . "\n";
$new_sock = $sock->accept();
}
close($sock);
That will give you a loop until you manually kill the script. If you just want to receive one message then take out the
$new_sock = $sock->accept() that's inside the
while loop. If you want to keep the socket open for multiple messages, but also want to make sure the socket is cleanly closed (which my above example does not do). Write a SIG handler that makes sure the socket gets closed upon receiving a SIGHUP, SIGTERM, etc.
HTH,
Chris