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: email@example.com Or by phone at: 408-864-8931 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 Superservers 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?