in reply to Regex to parse netstat output

Thanks for posting more detail. Your first regex should have a space at the end, to reject the 9494 when you are looking for 94. Or the second regex should have a ^ anchor at the beginning. And both need to not use . where you want to match a literal period. To match a period only, use \. (backslash period) or [.].

To see how it's going wrong, look at this:

$ perl -we'"131.228.132.245.9494 " =~ /(\d+)(.)(\d+)(.)(\d+)(.)(\d+)(. +)(94) / && > print qq<\n\nfirst digits: "$1", first .: "$2",\n > second digits: "$3", second dot: "$4",\n > third digits: "$5", third dot: "$6",\n > fourth digits: "$7", fourth dot "$8", portnum: "$9">' first digits: "228", first .: ".", second digits: "132", second dot: ".", third digits: "245", third dot: ".", fourth digits: "9", fourth dot "4", portnum: "94"
Do you see how the missing ^ and unbackslashed . combine to allow it to match?