#!/usr/bin/perl -w use strict; my $MONTH=qr/(January|February|March|April|May|June|July|August|September|October|November|December)(?=[^a-zA-Z])/; my @abbr = qw(January February March April May June July August September October November December); use WWW::Mechanize; my $url = "http://www.facebook.com"; my $m = WWW::Mechanize->new(); $m->get($url); $m->submit_form(form_name=>"loginform", fields=>{email=>$ARGV[0], pass=>$ARGV[1]}); $m->get("/bdaycal.php"); my $b= $m->content(); $b=~/.... Birthdays(.*?)Facebook /g; $b=$1; $b=~s|(http://\w+\.facebook.com/profile\.php\?id=\d+)| > $1_<|g; $b=~s/<[^>]*>//g; $b=~s/Give a Birthday Gift \| Post a Birthday Flyer//g; $b=~s/ //g; my @C = split /$MONTH/,$b; shift @C; my %B=@C; my $count=0; my %O; for (keys %B){ while ($B{$_}=~s/^(\d\d)-(.*?)(\d\d-.*)$/$3/){ my $day = $1*1; my @T=split ",",$2; my @S; foreach my $t(0..$#T){ my ($id,$age,$name); $id=($T[$t]=~s/([^_]+)_//)?$1:""; $age=($T[$t]=~s/\(age (\d\d)\)//)?$1:""; $name=$T[$t]; $O{$_}->{$day}->[$t]= {id=>$id, age=>$age, name=>$name }; $count++; } } }; my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time); $mon=$abbr[$mon]; for (@{$O{$mon}->{$mday}}){ $m->get($_->{id}); print $_->{name}; my $Form=0; for ($m->forms){ $Form++; last if $_->find_input ("wall_text"); } print ((($m->submit_form(form_number=>$Form, fields=>{wall_text=>"Happy Birthday!"}))?" - Success":" - Failed"),"\n"); }