in reply to regexp with repetition of non-capturing group

Quantifying a capture group doesn't create several capture groups, and a quantified capture group always returns only the last match.

Use another group to extract all the IP:port strings, and use split to extract them later.

qr/ ^\s* (\S+) ## something \s+ (\S+) ## apache24 \s+ (\S+) ## up \s+ (\S+) ## 11572 \s+ (.*?) ## date-time ((?: ## start non +-capturing group for ports* \s+ (?: ## PORTS (?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}) [.] (?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}) [.] (?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}) [.] (?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}) [:] \d+ ) )+) ## end non-c +apturing group for ports* $ /x; my @ips = split ' ', $6;

Update: fixed the regex.

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,