Una funcion que hice para probar un poco de "regex", usando la web http://ip.interchile.com/ devuelve tu ip publica como string,
#!/usr/bin/perl
$ip=GetPublicIp();
if($ip ne "Error"){
print $ip;
}else{
print "Error";
}
sub GetPublicIp{
#Funcion Por Isseu
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
$URL="http://ip.interchile.com/";
$browser = LWP::UserAgent->new();
$browser->timeout(5);
my $request = HTTP::Request->new(GET => $URL);
my $response = $browser->request($request);
if(!$response->is_error()){
$data=$response->content();
$data=substr($data,630,50);
if($data=~/<font size=7>(.+\..+\..+\..+)<\/font>/){
return $1;
}else{
print "Error";
}
}else{
print "Error";
}
}
estas usando modulos de mas, y podrias usar una expresion mas corta, asi no gasta mas recursos...
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
my $ip = get("http://icanhazip.com/");
print $ip;