http://www.perlmonks.org?node_id=1022900


in reply to Using variable to hold regex expression

Have you considered using Regexp::Common::net to capture those IPs?

use strict; use warnings; use Regexp::Common qw/net/; while (<DATA>) { if ( my ( $firstIP, $secondIP ) = /($RE{net}{IPv4})/g ) { print "FirstIP: $firstIP\nSecondIP: $secondIP\n\n"; } } __DATA__ Sample data Mar 10 07:42:38 DR-FW-1 : %ASA-6-305011: Built dynamic UDP + translation from inside:172.28.17.130/3324 to outside(internet-traff +ic):69.176.102.83/24295 Sample data Mar 10 07:42:38 DR-FW-1 : %ASA-6-305011: Built dynamic UDP + translation from inside:155.0.42.42/3324 to outside(internet-traffic +):71.200.20.7/24295

Output:

FirstIP: 172.28.17.130 SecondIP: 69.176.102.83 FirstIP: 155.0.42.42 SecondIP: 71.200.20.7