in reply to regex question

I'm assuming you are going to read in the file and chomp the result, thus removing the newline from the end. You can also do similar things if you slurp the file, etc., but obviously the regex changes. Info can be found in perlretut. For this case, you can capture the last two entries in a tab-delimited record by anchoring to the end of the string ($) combined with using [^] to specify a character class (see Simple word matching), a la:

#!/usr/bin/perl use strict; use warnings; my $string = "12\tWS:00001\tAny number of (\t.+)\tword_1\tword_2"; print join("\n", $string =~ /\t([^\t]*)\t([^\t]*)$/);