#!/usr/bin/perl use Business::UPS; # self-modifying UPS # tracking script # usage: # ups description = tracking number # Steve Pomeroy # steve@staticfree.info # slurp up the source open SRC, $ENV{_}; my $srcs = join "", ; close SRC; # munch the command line args my $track = join " ", @ARGV; if($track =~ /^(.+?)\s*=(.+)/){ $name = $1; $id = $2; $id =~ s/\s//g; } my @src = split (/^#-/m, $srcs); # store all the packages to track my %packages = ( #- "usb" => "1Z64X2690368470892", #- ); # don't forget to show info on the argv $packages{$name} = $id if defined $name; foreach my $package (keys %packages){ print "$package:\n"; my %track = UPStrack($packages{$package}); use Data::Dumper; print Dumper \%track; if($track{error}){ $src[1] =~ s/^"$package".+?\n//ms; die "ERROR: $track{error}"; } if( $track{'Package Status'} =~/delivered/i ){ $src[1] =~ s/^"$package".+?\n//ms; }else{ print "Last scanned in $track{'Last Scanned at'} at $track{'Last Scanned on'}." } print "$track{'Package Status'} to $track{'Shipped to'}\n"; } # write the source back to disk open SRC, ">$ENV{_}"; print SRC $src[0]; print SRC "#-"; print SRC qq(\n"$name" => "$id",) if defined $name; print SRC join ("#-", @src[1..2]); close SRC;