Two ways spring to mind. First, connect to the port yourself to see if anything is listening (untested):
use IO::Socket::INET;
$sock=IO::Socket::INET->new(PeerAddr => 'machinename',
PeerPort => $portnumber,
Proto => 'tcp');
And if you get a "connection refused" there's probably no listener.
Another way is to bind the port yourself. If it's a low-numbered port, you'll have to be root.
use IO::Socket::INET;
$sock=IO::Socket::INET->new(Listen => 1,
LocalAddr => $interfaceaddres,
LocalPort => $portnumber,
ReuseAddr => 1,
Proto => 'tcp');
If you don't get a "port already bound" error, then it's not bound.
If either of these fail, $sock will be undef and $! will have your error message.