#!/usr/bin/perl use warnings; use strict; while (my $line = ){ 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.