Perl for System Administration

An introduction on how to program in Perl for Systems Administrators

Course Contents

Preparing to Learn Perl

  • Things you need to know and do in order to run Perl and learn Perl programming
  • A module designed for complete beginners
  • The Perl compiler/interpreter
  • Perl under Unix/Linux
  • Perl under MS Windows 2000/NT/95/98/ME (perl.exe)
  • ActiveState Perl
  • Making programs executable
  • Perl from the command line
  • Specify the perl compiler/interpreter (#!)
  • Using plain text
  • Writing a very simple program
  • Running a very simple program
  • Basic syntax

Perl: The Absolute Minimum

  • Enough of the language to get started
  • The print command
  • Variables
  • Scalars - numbers and 'strings'
  • Assignment
  • Simple conditional tests - if "strings" "\n"
  • Lists
  • Arrays - for storing lists
  • foreach
  • Hashes
  • Other loops: while, for, do, until
  • Arrays - the rest
  • Simple input, e.g. while(<>)
  • Functions overview - recognising, writing, using
  • Regular expressions - perlre
  • Simple file handling - open, print
  • Subroutines - parameters in and out, listification, local variables
  • Help - perldoc, books, web

Perl: Beyond the Basics

  • More flow control
  • Statement modifiers
  • Quoting mechanisms - qq(), etc
  • Here documents
  • Uppercase/lowercase conversion
  • Splitting strings into lists
  • Joining lists into strings
  • Filtering lists with map
  • Sorting lists
  • The importance of context
  • Assignment shortcuts
  • Scoping rules
  • Special variables

Complex Data Structures & References

  • Limits of flat lists
  • Nesting arrays
  • Array references
  • Anonymous arrays
  • Named array references
  • Passing multiple arrays to/from functions
  • Hashes of arrays
  • Hash references
  • Arrays of hashes
  • Hashes of hashes
  • Complex nested data structures
  • Code references
  • Dispatch tables

Finding Out More For Yourself

  • How to read Perl's documentation
  • Where to find more information
  • Knowing what's out there to look for
  • FAQs

The Perl Debugger & Debugging Perl

  • Avoiding bugs
  • Perl's built-in debugger
  • Invoking the debugger
  • What you can do with the debugger
  • Understanding the debugger's command line interface
  • Knowing the debugger's basic command set
  • Exploring some extended functions
  • Graphical debuggers
  • Alternative debugging techniques

Using Perl Modules from CPAN

  • The Comprehensive Perl Archive Network (CPAN)
  • Why effective Perl programmers are efficient CPAN users
  • CPAN's philosophy
  • Finding modules
  • Installing Modules
  • Using modules
  • Some particularly useful modules

Command-Line Perl

  • General principles
  • Using Perl as a filter
  • Awk-like Perl
  • Many real world examples
  • Many examples using regular expressions
  • Command line flags

A Whistle-Stop Tour of the World of Perl

  • Wheels you don't need to re-invent
  • Common recipes
  • Common pitfalls

Advanced File Processing with Perl

  • Types of open
  • Filehandles
  • Reading line by line
  • Reading paragraph by paragraph
  • Reading entire files
  • Special variables
  • The flip-flop operator (..)
  • File test functions
  • Pipes

Perl Security Issues

  • Potential security pitfalls
  • Coding for security
  • Taint checking
  • Dangerous environment variables
  • File input
  • Set-user-id Perl programs
  • Permissions and users

System interaction

  • Connecting to other programs
  • Unsafe pipes
  • Using IO::Pipe
  • Grabbing a program's output
  • Other ways to run programs

Managing Users and Processes with Perl

  • User identity across platforms
  • Process control
  • Scheduling events
  • Managing disk quotas
  • Querying filesystem usage
  • Monitoring file operations
  • Monitoring network operations
  • Related perl modules

Managing Networks with Perl

  • Host Files
  • NIS and NIS+
  • DNS
  • WHOIS
  • LDAP
  • ADSI
  • Sending and receiving email
  • Related modules

Logging with Perl

  • Text logs
  • Binary logs
  • Handling state
  • Disk usage problems
  • Log analysis
  • Log munging
  • Logging related modules

Practical Work

This is a hands-on practical workshop based around the coding of real-world solutions to real-world problems.