$out = ##-- concatenate result digits join('', ##-- reverse digit order within each octet map {reverse split(//,$_)} ##-- reverse octet order reverse ##-- subtract octet values from 999 map {999-$_} ##-- extract final 3 octets ($ip =~ /^\d+\.(\d+)\.(\d+).(\d+)$/) );