#!/usr/bin/env perl use strict; use warnings; use Mojo::DOM; use Mojo::Util qw(trim); my $content = <<'HERE'; info john 100 - 200 kent HERE my $dom = Mojo::DOM->new($content); my ($data, $left_name, $range, $right_name) = map {trim($_->content)} @{$dom->find('td')}; my ($left_val, $right_val) = split /\s*-\s*/, $range; print "data:$data $left_name:$left_val $right_name:$right_val\n"; #### data:info john:100 kent:200