So, if the primary fails secondry port should be created, then send function should send the message
I don't understand this. It's ok. But, if you want to create the secondary socket when the first socket fails and send message to secondary when the primary fails.
Here is my sample. May be you want this.
my $portp = 5000;
my $ports = 5001;
my $hostp = "localhost";
my $hosts = "localhost";
my $sock = IO::Socket::INET->new(Proto => 'tcp', PeerPort => $portp, P
+eerAddr => $hostp) || IO::Socket::INET->new(Proto => 'tcp', PeerPort
+=> $ports, PeerAddr => $hosts) or die "Can't create socket: $!\n";
print $sock "Hello from client\n";