in reply to XML::Simple help -- please

If you have a data structure and don't know what's in there, use Data::Dumper to dump it:
use Data::Dumper; my $content = join '', <DATA>; my $response = XMLin($content); print Dumper($response);
This will print something like
$VAR1 = { 'offer' => { '6' => { 'zip' => '48120', 'transit' => '1', 'smoking' => {}, 'phone_public' => '1', 'state' => 'MI' }, '60046' => { 'zip' => '80236', 'transit' => '1', 'smoking' => {}, 'phone_public' => '1', 'state' => 'CO' }, '7' => { 'zip' => '43240', 'transit' => '1', 'smoking' => {}, 'phone_public' => '1', 'state' => 'MI' } } };
and shows that starting from $response (which is a reference to a hash), you need to step down to the value of the offer key.

There, you'll find another reference to a hash. This one contains one entry per id, so all you need to do is loop over these keys and then step down to the zip element of the sub-hash:

my $response = XMLin($content); for my $id (keys %{$response->{offer}}) { print $response->{offer}->{$id}->{zip}, "\n"; }
This will print the zip codes you're interested in:
48120 80236 43240