Ny kurs om programspråket Perl
6 minuter i lästid Kursnyheter Perl

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 and defined
  • 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

Länkar