in reply to Public IP Address

You may want to add additional external address providers, in case dyndns is unavailable.

Here are a few alternatives:

http://www.ipchicken.com/
http://www.whatismyip.com

Here is some parsing code that will generically work on all 3 : (It could be made more paranoid, or cleverer, but this is easy to read):

my ($IP_addr)=$content=~m/(\d+\.\d+\.\d+\.\d+)/;
Better still, use Regexp::Common: (untested)
use Regexp::Common qw /net/; my ($IP_addr)= $content=~ /$RE{net}{IPv4}/ ;

     "A closed mouth gathers no feet." --Unknown