sub read_sql { my ($dbh, $sql, $callback) = @_; my $sth = $dbh->prepare( $sql ); $sth->execute(); return unless $sth->rows; while ( my @row = $sth->fetchrow_array ) { $callback->( @row ); } $sth->finish; } my @AssignmentIDs; # You don't need the empty assignment. read_sql( $dbh, $sql, sub { my ( $AssignmentID, $UserCount) = @_; push @AssignmentIDs, $AssignmentID; }); my $AssignmentIDs = join ',', @AssignmentIDs;