use warnings; use strict; while () { if (/ ^ (\d+) [.] (\d+) [.] (\d+) $ /x) { print "$1 $2 $3\n"; } } __DATA__ 7.55.3 12.0.2 #### 7 55 3 12 0 2 #### if (/ ^ (\d{1,2}) [.] (\d{1,2}) [.] (\d{1,2}) $ /x) {