>perl -wMstrict -le "my $str = 'foo 94.198.240.132:60988 bar 174.142.24.201:3128 baz'; if (my @matches = $str =~ m{ ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:[0-9]{1,5}) }xmsg) { print qq{matched @matches}; } ;; if (my @ips = $str =~ m{ \d{1,3} (?: \. \d{1,3}){3} : \d{1,5} }xmsg) { for my $ip (@ips) { my ($p1, $p2, $p3, $p4, $p5) = $ip =~ m{ \d+ }xmsg; print qq{'$ip': '$p1' '$p2' '$p3' '$p4' '$p5'} } } " matched 94.198.240.132:60988 174.142.24.201:3128 '94.198.240.132:60988': '94' '198' '240' '132' '60988' '174.142.24.201:3128': '174' '142' '24' '201' '3128'