sub shop_for_rates { my $self = shift; my ($from, $to, $packages, $args) = @_; unless ( $from && $to && $packages ) { croak "shop_for_rates(): usage error"; } unless ( ref $from ) { $from = Net::UPS::Address->new(postal_code=>$from); } unless ( ref $to ) { $to = Net::UPS::Address->new(postal_code=>$to); } unless ( ref $packages eq 'ARRAY' ) { $packages = [$packages]; } $args ||= {}; $args->{mode} = "shop"; $args->{service}||= "GROUND"; return [sort{$a->total_charges <=>$b->total_charges} @{$self->request_rate($from, $to, $packages, $args)}]; }