Ny kurs om programspråket Perl
Vår nya Perl-kurs är utformad för att ge en omfattande förståelse för språket. Vi börjar med att täcka grunderna i Perl-programmering, inklusive variabler, datatyper, kontrollstrukturer och funktioner. Därefter fokuserar vi på avancerade koncept som reguljära uttryck, filhantering, databehandling och modulär kodning.
Uppdaterad: 18 mars 2024.
Vi går också igenom hur Perl kan användas för att automatisera uppgifter och hantera data på ett effektivt sätt. Genom praktiska övningar och projekt får du erfarenhet av att skriva funktionell och lättläst kod samt att lösa verkliga problem med hjälp av Perl. På kursen jämför vi också med andra programspråk, så att du lättare kan relatera till vad du redan kan.
Kursen vänder sig till programmerare som snabbt behöver lära sig språket Perl. Detta gör vi genom att konsekvent jämföra syntax och semantik för Perl med andra mer konventionella programspråk som C, C++, Java, AWK samt BASH scripts.
En liten personlig kommentar är att jag började programmera i Perl redan i slutet på 1980-talet, då språket var tämligen nytt och ett friskt alternativ till att skriva shell scripts och olika kombinationer av AWK.
För det mesta skriver man ganska små program i Perl, men det finns också ganska stora applikationer skrivna i Perl. Mitt första större program i Perl skrev jag 1995 och utgjorde Sveriges första internet bokhandel. Det var en tid då cookies inte ännu var uppfunnet, inte heller CSS, samt HTML tabeller var experimental 🤔.
Varukorgen implementerade jag som små text filer i en viss filkatalog, med filnamnet baserat på IP numret för kunden i fråga. På denna (primitiva) tid var alla IP nummer publika... Varje gång det kom in ett anrop till Perl CGI scriptet kollade programmet IP nummer och leta efter en motsvarade varukorgs fil i katalogen. Hela webbplatsen drevs på en dedikerad SUN server hos en av de första ISP:er pi.se.
Under årens lopp har jag skrivit otaliga Perl anpassade Perl skript kunder runt om i Europa och Sverige. För femton år sedan var jag technical lead på ett Perl projekt hos en av våra affärsbanker, på den avdelning som hanterade kreditkorts-betalningar. Systemet hade utvecklats gradvis under flera decennier och hade blivit mer och mer ohanterligt, då antalet kodrader var runt en halv miljon, fördelat på hundratals filer.
Vårt uppdrag var att analysera varför det tog alldeles för lång tid att bygga ny funktionalitet, samt hur man skulle gå vidare med att antigen skriva om systemet i Java eller modernisera system i Perl. Efter flera månaders arbete med dels själva programkoden, men också med arbetssätt och processer, kom jag fram i min slutrapport att man skulle kunna reducera kod-mängden i Perl till cirka en tiondel genom att genom att tillämpa moderna tekniker i Perl, såsom klasser, enhetstestning och moderna arbetsätt som versionshantering, dedikerad IDE, virtuella maskiner med mera.
Sagt och gjort, kunden var mycket nöjd och vi skulle starta med moderniserings-arbetet av Perl systemet i början på hösten det året 🤑. Men då kom bank-kraschen, med fallet för Lehman Brothers och flera andra stora banker och vi åkte ut så det visslande om det. Tja, så kan det gå... 😵💫
Här kan du se innehållsförteckningen på våran grundkurs i Perl:
Course Introduction
What the course is about and how to get started.
Background
- Why Perl was created
- Larry Wall
- Historical significance and evolution of Perl as a programming language
- Version history
- Perl 5 vs. Perl 6
- Applications and domains where Perl is extensively used (e.g., web development, data processing, system administration)
Installation
- Various ways of installing Perl
- Installing using via a package manager
- Installing using via a downloaded bundle
- ActiveState Perl
- Strawberry Perl
- Install from the sources
- Setup and configuration of Perl environment on various platforms
- Official documentation of Perl and how to find what you're looking for
Perl Fundamentals
The most essential parts of the language to get started.
Basic Syntax
- Hello world in Perl
- Command-line invocation
- Perl type system
- Program structure
Scalar Types
- Variables
- Text strings
- String interpolation
- Integer and floating-point numbers
- Arithmetic operators
- Logical and relational operators
Composite Types
- List (a.k.a. array)
- Operators on lists
- Ranges & slices
- Table (a.k.a. hash)
- Operators on tables
- Scalar contra list contexts: its significance and utilization in Perl programming
Control Structures
- Blocks
- Scopes
- If statement
- If expressions
- Using
unless
- While loop
- For loop
- Foreach loop
- Jumps
- Switch statement
Special Variables
- Understanding
$_
- Command=line arguments
@ARGV
- Environment variables
%ENV
- Other special variables to know about
Subroutines
- Declaration syntax
- Call syntax
- Passing arguments
- Understanding
@_
- Parameters via multi-assignment or shift
- Recursive functions
Perl Usage
How to write useful Perl programs. Discussion of the most commonly used built-in functions. Usage of regular expressions (regex). Basic I/O and file based I/O. Discussion of some core/bundled modules.
Working with Text Data
- Length
- Upper, lower, title case
- Substrings
- Reversing text
- Translating chars
- Splitting text
- Chop & chomp
- Formatted print & strings
Regex & Pattern Matching
- Regular expressions (regex) syntax, metacharacters, and quantifiers in Perl
- Special patterns
- Matching operators
- Extraction of sub-matches
- Substitution
Quote-like Operators
- String delimiters
- Interpolating and non-interpolating quote-like operators
- Understanding here-doc operator
- Word-list quote operator
- Pattern quote operator
- Command quote operator
Exceptions
- Understanding function
eval
- Using function
die
- Understanding
undef
anddefined
- Writing a try-catch mimicking construct
- Understanding special variable
$@
- Using modern
try-catch-finally
in Perl
Working with Numeric Data
- What is a number
- Integer vs. floating-point
- String vs. number operators in Perl
- Numerical literals
- Using a different number base (octal & hexadecimal)
- Inf and NaN
- Arbitrary precision numbers (bigint, bigfloat & bignum)
- Rational numbers (bigrat)
Working with List Data
- List operations and manipulations
each
,push
&pop
,unshift
&shift
join
reverse
grep
&map
- Sorting a list
Working with Table Data
- Table operations and manipulations
each
exists
&delete
keys
&values
Files & I/O
- Writing to stdout
- Reading from stdin
- Open a file for write or append
- Write to a file
- Open a file for read
- Read from a file
- Close a file
- Opening a file that do not exist
- File predicates used for testing
- Obtaining file meta-data, such as byte-size
Accessing Directories
- Open a directory file
- Listing directory entries
- Inspecting entry meta-data
- Flat scan contra recursive scan
Generating Reports
- Overview of the reporting capabilities in Perl
- Report format syntax
- Text fields
- Numeric fields
- Field width
- Fill chars
- Field justification
- Page header
Special Literals
__FILE__
&__LINE__
&__SUB__
__PACKAGE__
__END__
&__DATA__
Perl Library
Overview of some useful core modules. Usage of cpan
and installation of remote modules.
Pragmas
- What is a pragma
use strict
use warnings
use diagnostics
use version
use english
use Modern::Perl
Core Modules
- What is a module
- How to import a (core) module
use lib
Usage of some Core Modules
- Various modules presented
- Scalar::Util
- List::Util
- Hash::Util
- Data::Dumper
- GetOpt
- Cwd
- File::Basename
- File::Find
- File::Path
- File::Spec
- JSON
CPAN
- What is a remote module
- What is CPAN
- Installation of the
cpan
client - Browsing CPAN modules
metacpan.org
Usage of some CPAN Modules
- Various modules presented
- DateTime
- HTTP::Request
- DBD::mysql