#!/usr/bin/perl ########################################### # dmv -- Automate checking CA plates # Mike Schilli, 2003 (m@perlmeister.com) ########################################### use strict; use warnings; use WWW::Mechanize; use WWW::Mechanize::FormFiller; die "usage: $0 XXXXXXX" unless defined $ARGV[0]; $ARGV[0] =~ s/\s+//g; my $agent = WWW::Mechanize->new( autocheck => 1); my $fi = WWW::Mechanize::FormFiller->new(); $agent->get('http://www.dmv.ca.gov'); $agent->follow(qr(Personalized)); $agent->follow( qr(order Special Interest)); $agent->form("personalized"); $agent->submit(); $fi->add_filler('vehicletype' => Fixed => 'AUTO' ); $fi->add_filler('leased' => Fixed => 'N' ); $fi->add_filler('platetype' => Fixed => 'R' ); $fi->add_filler('kidpic' => Fixed => '' ); $fi->add_filler('Submit2' => Fixed => '' ); $fi->fill_form($agent->current_form); $agent->submit(); for(0..6) { $fi->add_filler("LicPltCharAry$_" => Fixed => $_ > length $ARGV[0] ? "" : substr($ARGV[0], $_, 1)); } for(0..6) { $fi->add_filler("HalfSpace$_" => Fixed => ''); } $fi->add_filler('Submit2' => Fixed => ''); $fi->fill_form($agent->current_form); $agent->submit(); if($agent->content() =~ /not available/) { print "$ARGV[0]: not available\n"; } elsif($agent->content() =~ /Complete Order Form/) { print "$ARGV[0]: available\n"; } else { print "Unexpected response", $agent->content(), "\n"; }