use strict; use warnings; while (<>) { chomp; s/\s*#.*$//; if (my ($stem, $first, $last) = /\b(\d+(?:\.\d+){2})\.(\d+)-(\d+)\b/) { print "$stem.$_\n" for $first..$last; } elsif (/\b(\d+(?:\.\d+){3})\b/) { print "$1\n"; } }