\documentclass[12pt]{article}

\usepackage{geometry}
\geometry{verbose,letterpaper,tmargin=0.75in,bmargin=0.75in,lmargin=0.75in,rmargin=0.75in,headheight=0.75in,headsep=0.75in,footskip=0.2in}

\pagestyle{empty}

\newcommand*{\quizdate}{Feb 20th, 2008}
\newcommand*{\subjectname}{CIS 26}

\begin{document}

<?perl
my %seen;
my @numbs;
while($#numbs < 30){
    my $n = 10 + int(rand(89));
    push @numbs,$n unless $seen{$n};
    $seen{$n} = 1;
}
for my $examno (@numbs){ 
?>

\noindent Name: \hrulefill \hspace*{1em} SS\# (4 digits): \hrulefill \hspace*{1em}  PaperId\#: <?=$examno?>

\noindent \subjectname{} Quiz \hfill \quizdate

\medskip

\begin{center}
\dotfill\\  
Tear at this line.
\end{center}

\medskip

\noindent
PaperId\#: <?=$examno?> \hfill \subjectname{} Quiz \hfill \quizdate \hfill PaperId\#: <?=$examno?>

\begin{enumerate}

\item Write a function to sort an integer array.
\vspace*{10ex}

\item Write a function to reverse an array.
\vspace*{10ex}

\item  Write a function to find the maximum and minimum elements of an integer array.
\vspace*{10ex}

\item Write a function to find the sum and average of an integer array.
\vspace*{10ex}

\item Write a function to determine if a character array is a polyndrome (reads the same forwards and backwards). Your function takes a character array, and returns true or false.
\vspace*{10ex}

\end{enumerate}

\vfill
\noindent
PaperId\#: <?=$examno?> \hfill \subjectname{} Quiz \hfill \quizdate \hfill PaperId\#: <?=$examno?>

\pagebreak

<?perl
}
?>

\end{document}

