if ( my ($pairs) = $entry =~ /^ \s* permit \s+ ip \s+ (?: host \s+ \S+ \s+ )? (.*)/x ) { while ( $pairs =~ /(\S+) \s+ (\S+)/xg ) { my ($ip, $mask) = ($1, $2); ... $ip ... $mask ... } }