in reply to using regex to capture a string and an array

The following does the job with a single regex (well, almost), but is perhaps a bit too cute to live in production code:

>perl -wMstrict -le "for my $String (@ARGV) { my ($Site_Code, @RS) = grep defined, $String =~ m{ \A (...) .{4} | \G (\d) }xmsg ; local $\" = q{' '}; print qq{site code: '$Site_Code' digits: '@RS'}; } " uk1sxve01205.gfjgjf5.fdhd5 usasxve513.gfdhf4.hgfd4 site code: 'uk1' digits: '0' '1' '2' '0' '5' site code: 'usa' digits: '5' '1' '3'
As you will see if you eliminate the grep statement, the regex produces a rain of undefined elements.

I think I would prefer an approach more in line with those given in other replies:

  1. Extract the decimal digits as a single string. This allows you to be very specific about what you want.
  2. If you are interested in the individual digit characters, split the string of digits to an array to get them.