I liked JohnGG's split idea. This is a fine way to go when the data is white-space separated.
I would just point out that it is also possible to specify an index from the end of the array for the list slice. Instead of saying "2" which means skip 0 and 1, you can say -2 which means next to last in the array, [-1] is the last thing in the array (FA). Sometimes this helps if there is a lot of things on the line or if number of things varies. Here 2 and -2 mean the same thing and is just a coincidence.
If this c,t,d fields are always there, then extracting the digits is easy with match global:
my $dev = "c10t2d1";
my($c,$t,$d) = $dev =~ m/\d+/g;
print "$c $t $d";
#prints: 10 2 1
If you need a regex, say line can end in other things than FA, then one way is anchor the regex to the end of the line and "work backwards", one way:
my $test = "10 1/0/6/0/0.1.20.0.0.2.1 c10t2d1 FA ";
my ($ctd) = $test =~ m/(\w+)\s+FA\s*$/;
print $ctd;
#prints: c10t2d1
|