Broken into pieces, this is what's going on:
my @parsedarray = # declare an array, and assign it the results of:
(
$rowcol =~ # the results of $rowcol matched against
m/ # the pattern:
([A-Z]?) # 0 or 1 upper-case-alpha characters (1st submatch),
# followed by
([0-9]+) # 1 or more numeric characters (2nd submatch)
/x # this flag added to allow this verbose formatting
); # ...which in list context is all the submatches
So if $rowcal = 'D3'
:
my @parsedarray = ('D3' =~ m/([A-Z]?)([0-9]+)/); # which reduces to:
my @parsedarray = ('D', '3');
You can read about regular expressions in depth at perldoc perlrequick (a quick summary), perldoc perlretut (the tutorial), and perldoc perlre (all the details), and the various regular expression operations (matching, substitution, translation) at perldoc perlop.