print for map{ /(\D+)?(\d+)-\1?(\d+)/ ? ( map{ ($1||'') . $_ } $2 .. $3 ) : $_ } split ';', 'ph1-3;25;t3;t47-t50;d4-6';; ph1 ph2 ph3 25 t3 t47 t48 t49 t50 d4 d5 d6