- Introduction
- Starting PERL
- Statements
- File Operations
- Pattern Matching
- Subroutines and Modules
- Debugger Scripts
- Application Examples and Exercises
1. Introduction
- Exploring the benefits of PERL for design engineers
- Internet resources for problem solving and sharing solutions
- PERL book recommendations
- Plain Old Documentation (POD) the language reference
- PERL applications in design
2. Starting PERL
- Running programs in UNIX or Windows
- Using command line options
- Understanding scalar variables
- Numbers & strings
- Interpolation explained
- Arrays (lists)
- Hashes (associative arrays)
- Exploring scalar and list context
3. Statements
- Conditional statements: if, unless
- Alternative case structures
- Looping statements: until, while, for, foreach
- Loop control using: next, last, redo
- Conditional modifiers: if, unless
- Loop modifiers – while, until
- Using 'and' and 'or' for better readability
4. File Operations
- Opening text files for reading, writing or appending
- Using pipes to other processes
- Testing file properties with file test operators
- Formatting output using print and write
- Frequently used special variables
5. Pattern Matching
- Matching with modifiers
- Substituting with modifiers
- Inventing character classes
- Quantifiers
- Anchoring matches on character boundaries
- Reusing matched groups with back references
- Grouping and alternatives in regular expressions
- Extended regular expressions
- Guidance for complex regular expressions
6. Subroutines and Modules
- Writing subroutines in PERL
- Controlling variable scoping using my, our and local
- Using references to variables and subroutines
- Packaging scripts for reuse with modules
7. Debugger Scripts
- Using PERL debugger
- Syntax checking
- Generating extra warnings
- Writing better code using pragmas
8. Application Examples and Exercises
- Modifying automatically generated netlists
- To ensure different tools work together smoothly
- Filtering long report files e.g. those generated by place & route tools
- Creating, translating and modifying files containing test vectors
- Autonomously running design tools in sequence
- Checking results then warning, re-running, stopping or continuing accordingly