sub callbacks_for_today { my $username = shift or confess 'must supply username'; [" SELECT * FROM call_schedule INNER JOIN person ON (user_people_id=people.id) WHERE DATE_FORMAT( `callback_time` , '%Y-%m-%d' ) = DATE_FORMAT( NOW( ) , '%Y-%m-%d' ) -- date_clause AND staff_people_id = users.people_id AND username =", \$username, " ORDER BY callback_time DESC "] } #### sub swap_sql { my ($sql_fragment, $sub_hint, $sub_expr) = @_; $sub_hint = "^.+-- $sub_hint"; # return data structures as is ref $sql_fragment and return $sql_fragment; $sql_fragment =~ s/$sub_hint/$sub_expr/m ; $sql_fragment; } #### sub callbacks_for_tomorrow { my $username = shift or confess 'must supply username'; my $today_sql = callbacks_for_today($username); my $tomorrow_date_str = "DATE_FORMAT( `callback_time` , '%Y-%m-%d' ) = DATE_FORMAT( DATE_ADD(NOW( ), INTERVAL 1 DAY) , '%Y-%m-%d' ) -- date_clause"; my @tomorrow_sql = map (swap_sql($_, 'date_clause', $tomorrow_date_str), @$today_sql); \@tomorrow_sql; }