Welcome to John Perry's home page.  This site will undergo more or less
continuous updating as the school year progresses.  John can be contacted
via Email at:


Or by phone at:


     Photo Session Scripting Program 

CIS 15BG Intermediate C 

    Unsorted Lab 5 Input File 

    Lab 5 Starter Code Plus Input File 

     Wrappers for Malloc/Calloc/Realloc etc. 

CIS 18A Introduction to Unix/Linux 

    Vi Notes For People Who Didn't Yet Buy Packet

CIS 26B Advanced C Programming 
     Malloc/Calloc/Fopen Wrapper Functions 

CIS 75B Internet Client/Server Programming 

      Perry's Lab Two Answer 

      Header File for Lab 1 and Beyond 

      Strtok and Strtol 

     Sigaction Handout 

     Fork, Waitpid, and SIGCHLD 

     Low-Level I/O and Incremental Read/Write 

      One Shot TCP Client/Server Pair 

     Multi-Client, Multi-Request Fork-Based TCP 

     File Locking and Unlocking with Fcntl 

      The Hostent Structure 

      Descriptor Polling with SELECT 

      "Paranoid" (Correct) Version of SELECT Server 

     Making, Traversing, Removing Directories

      The UDP Protocol 

      Calling External Programs with EXEC 
     A Remote Directory Service Using Exec 


      Scatter Read and Gather Write 

      FTW: The File Tree Walker 

      Shared Memory and Memory-Mapped I/O 

      Altering Terminal Characteristics 

      Named Pipe Client/Server 

CIS 33B Advanced Perl Handouts
     My Lab 5 Code 

     Data Files and Output for Lab 5

     Elementary References

     Reference Demo. Grep/Map Demo, too!
     Grep and Map

     Hash of List

     List of Hash and Hash of Hash

     Reference Tricks With Grep and Map

     Sorts from Simple to Advanced

     Non-Object Modules

     Object-Oriented Perl

     Object-Oriented Set Datatype

     Databases and Persistent Hashes

      SQL: Basics and Usage From Perl 

      Using SQL From Perl: The Core Operations 

     Hashing by Hand

     Hashing to Variable Record Length Files

     Processing Signals and Interrupts

     Processes, Subprocesses, and Fork

     TCP Client and Server

     UDP Client and Server

     Single-Threaded TCP Server

     Processing Command-Line Options with Getopts

     Binary Array Search and Binary Trees

     File Locking and Unlocking

     The Eval Command

     Building Graphical Interfaces with Tk

     Set Processing

CIS 33A Beginning Perl Handouts

      New Problem 3 for Perl Lab 3 

      Old Perl Final With Answers  

     Basic Perl Regular Expressions
     Basic Scalar Operations

     Basic List Operations

     Intermediate Lists and Basic Hash Operations

     Using Lists and Hashes Together

     The Substitution Operator

     File Input/Output and Subroutines

     Summary of Loop Control Structures

     Printf and Sprintf

     The Tr Operator

     Directory Manipulation

     The File Test Operators

     Time-Oriented Functions

     Advanced List Processing

     Sorting by Non-Trivial Criteria

     The File Module: Find, Copy, Mkpath

     File::Find -- Crucial Details

     Random Access File Manipulation

     Advanced Strings: Index, Rindex, and Substr

     The Range Operator and the $. Variable

     The Greatest List Functions: Grep and Map

     Perl Pointers: References

     Reference Tricks With Grep and Map

     Making Subroutine Libraries with Modules

CIS 89B WWW Server-Side Scripting

     CSV Data File for Lab 2 

     A Bare-Bones Form 

     Checkbox Widget Illustration: Digital Clock  

     Checkbox Group Widget: Same Digital Clock  

     Password Field Widget Demo 

     Passwords Again: Results Printed AFTER Form 

     Radio Button Demo: Output AFTER Form 

     Scrolling Lists, Multi-Page Forms, Text Display 

      Illustrating Hidden Fields 

     Using Persistent Hashes As Databases 

      SQL: Basics and Usage From Perl 

      Using SQL From Perl: The Core Operations 

     A Start With SQL and Relational Databases 

     More Advanced SQL plus Using Subs In Scripts! 

     More SQL: Record Deletion and Radio Buttons 

     Full SQL: Inserts, Deletes, Queries, Updates 

     The Many Ways to Make a Simple Table 

     Sending Email From A CGI Script

     Multipage Forms: The Basics of the Hidden Widget

     MultiPage Forms: Using Databases, Error Forms 

     Uploading Files From a CGI Script 

     Popup Menus & Using Hidden To Retain All Forms

     Multiple Popup Menus: No Layout Control 

     Multiple Popup Menus With Table Layout Control 

     Layout Control With Frames 

     Realtime Output: NPH Mode 

     More NPH Mode: Read Starting at End-of-File 

     A Simple Cookie Example 

     A Cookie Example With A Visit Counter 

     A Complex Cookie Example With Multipage Forms
     How to Put List Params into Cookie Hashes 

     Hyperlinks With Added Color!! 

     Oh My God! I've Got To Move My Site!

     Side-By-Side Frame Layout: "Newspaper" Mode 

     Bare Bones Cookies: What Does "Header" Do?