4887l2 Listing 2. retrieve-birthday-alzabo.pl, an Alzabo implementation of the program in Listing 1. #!/usr/bin/perl use warnings; use strict; use Alzabo::Runtime::Schema; # Set up some basic variables my $schema_name = 'addressbook'; my $username = 'reuven'; my $password = ''; # What name should we look for? my $look_for_name = $ARGV[0]; die "You didn't enter a name to look for " unless $look_for_name; # Add % to the front and back, for an SQL regexp $look_for_name = "%" . $look_for_name . "%"; # Load the schema from disk my $schema = Alzabo::Runtime::Schema->load_from_file( name => $schema_name ); $schema->set_user( $username ); $schema->set_password( $password ); $schema->connect; # Get the table object on which we're going to operate my $people = $schema->table("People"); # Retrieve all of the rows from our table matching our query my $row_cursor = $people->rows_where(where => [[$people->column('first_name'), 'LIKE', $look_for_name], 'or', [$people->column('last_name'), 'LIKE', $look_for_name]]); my $rows_returned = 0; # Iterate through each row using a cursor while (my $row = $row_cursor->next_row) { my $first_name = $row->select('first_name'); my $last_name = $row->select('last_name'); my $birthday = $row->select('birthday'); print "$first_name $last_name (birthday: $birthday)\n"; $rows_returned++; } # Indicate if there was a problem if ($rows_returned == 0) { print "No one in the addressbook matches that pattern.\n"; }