Index: /trunk/lib/Bookmarks.pm
===================================================================
--- /trunk/lib/Bookmarks.pm	(revision 71)
+++ /trunk/lib/Bookmarks.pm	(revision 72)
@@ -75,5 +75,5 @@
 sub get_bookmarks {
     my $self = shift;
-    my $params = shift;
+    my $params = shift || {};
     my $search = Bookmarks::Search->new($params);
 
Index: /trunk/scan
===================================================================
--- /trunk/scan	(revision 72)
+++ /trunk/scan	(revision 72)
@@ -0,0 +1,38 @@
+#!/usr/bin/perl -w
+use strict;
+
+use Bookmarks;
+use LWP::UserAgent;
+use Text::CSV;
+use Getopt::Long;
+
+GetOptions(
+    'csv' => \my $CSV,
+    'timeout=i' => \my $TIMEOUT,
+);
+
+my $DBFILE = shift or die "Usage: $0 <dbfile>";
+
+$TIMEOUT ||= 10;
+
+my $bookmarks = Bookmarks->new({
+    dbname => $DBFILE,
+});
+
+my $ua = LWP::UserAgent->new;
+$ua->timeout($TIMEOUT);
+
+my $csv = Text::CSV->new;
+
+for my $bookmark (@{ $bookmarks->get_bookmarks->results }) {
+    printf "%3d %s\n", $bookmark->id, $bookmark->uri unless $CSV;
+    my $response = $ua->head($bookmark->uri);
+    printf "   -> %s\n", $response->status_line unless $CSV;
+    $csv->combine(
+        $bookmark->id,
+        $bookmark->uri,
+        $response->code,
+        $response->message,
+    );
+    print $csv->string . "\n" if $CSV;
+}
