The html you finally posted shows that you only have one row. It contains a lot of white space. You have parsed and dereferenced it correctly. All that is left is to clean up the white space and rearrange it.
use strict;
use warnings;
use Data::Dumper;
my $foo = 0;
my $row = [
'info',
'
john
',
'
100 - 200
',
'
kent
',
];
print Dumper($row);
foreach (@$row){
s/\A\s+//;
s/\s+\z//;
}
print Dumper($row);
my ($dat1, $dat2) = ${$row}[2] =~ m/(\d+)\D+(\d+)/;
print "data:$row->[0] $row->[1]:$dat1 $row->[3]:$dat2", "\n";