in reply to Do Something Until a Variable's Value Changes

Something like this might get you started?
#!/usr/bin/perl use warnings; use strict; while (my $line = <DATA>){ next unless $line =~ /\S/; chomp $line; my @cats = $line =~ /(\d+)/g; my $rec = join(q{.}, @cats); print qq{$rec\n}; } __DATA__ Category1 Category1--Subcategory1--subsubcategory1--etc. Category1--Subcategory1--subsubcategory2--etc. Category1--Subcategory2--subsubcategory1--etc. Category1--Subcategory2--subsubcategory2--etc. Category2 Category2--Subcategory1--subsubcategory1--etc. Category2--Subcategory2--subsubcategory1--etc.
1 1.1.1 1.1.2 1.2.1 1.2.2 2 2.1.1 2.2.1