#!perl use strict; use warnings; use LWP::Simple; use HTML::TreeBuilder; use Data::Dump; my $URL = 'http://www.dell.com/support/troubleshooting/ed/en/edbsdt1/Servicetag/'; my %machine=(); while (){ chomp; $machine{$_}{'serial'} = $_ if (length($_)<=7); } my $ua = LWP::UserAgent->new; for my $sn (sort keys %machine){ print "Checking $sn .. "; parse_dell($sn); print "done\n"; } sub parse_dell { my ($sn) = @_; my $response = $ua->get($URL.$sn); if ($response->is_success) { my $tree = HTML::TreeBuilder->new(); $tree->parse($response->decoded_content); my @e = $tree->look_down('class', 'TopTwoWarrantyListItem'); for (@e){ my $t = $_->as_text; if ($t =~ m!(NBD ProSupport for Enterprise|Next Business Day).*(\d{2}/\d{2}/\d{4})! ){ $machine{$sn}{$1}=$2; } } # meta tags @e = $tree->find_by_attribute('name','supportproductcode'); for (@e){ $machine{$sn}{'model'} = $_->attr('content'); } } else { warn $response->statusline; } } dd %machine; __DATA__ 13XGK4J 9KJDK4J CNOR665J74445994CNTS 3RT1K4J