From Wikipedia, the free encyclopedia
use warnings;
use strict;
use POSIX qw(floor);
my $res = search('talbot', 'Philippe Adjutor Talbot');
print "Found on $res\n";
sub search {
my ($search_string, $page) = @_;
my @revisions = get_revs($page); # revision data
my $total_revisions = @revisions; # count
my $revisions_left = $total_revisions - 1; # revisions left to check
my $revision_number_to_check = floor($revisions_left / 2);
while ($revisions_left > 1) {
my $revision_to_check = $revisions->[$revision_number_to_check]; # revision datum
$revisions_left = floor($revisions_left / 2);
if (check_page($revision_to_check, $search_string)) {
$revision_number_to_check -= floor($revisions_left / 2);
} else {
$revision_number_to_check += floor($revisions_left / 2);
}
}
my $revision_to_check = $revisions->[$revision_number_to_check]; # revision datum
if (check_page($revision_to_check, $search_string)) {
return $revision_number_to_check;
} else {
return $revision_number_to_check + 1;
}
}
sub check_page { # TODO
# uses query.php to see if $page contains $search_string
# returns 1 if it does, 0 otherwise.
}
sub get_rev { # TODO
# returns revisions for a specific page as a list of hashrefs.
}