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.

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 Perl kurs:

Background

  • Why Perl was created
  • Historical significance and evolution of Perl as a programming language
  • Applications and domains where Perl is extensively used (e.g., web development, data processing, system administration)
  • Community resources: exploring Perl forums, documentation, and support channels

Installation

  • Various ways of installing Perl
  • Setup and configuration of Perl environment on various platforms

Perl Fundamentals

Basic Syntax

  • Hello world in Perl
  • Command-line invocation
  • Perl type system
  • Program structure

Scalar Types

  • Integer and floating-point numbers
  • Text strings
  • Text substitution
  • Variables
  • Arithmetic operators
  • Logical and relational operators
  • Text operators
  • Special variables, such as $_

Composite Types

  • Lists (arrays)
  • List operators
  • Maps (hashes)
  • Map operators
  • More special variables, such as @_, %ENV and @ARGV
  • Scalar and list contexts: their 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

Regex & Pattern Matching

  • In-depth exploration of regular expressions (regex) syntax, metacharacters, and quantifiers in Perl
  • Special patterns
  • Matching operators
  • Extraction of sub-matches
  • Substitution
  • Reading from the command-line or files
  • Practical applications of regex: text manipulation, validation, extraction, and substitution
  • Advanced regex techniques: lookahead, lookbehind, capturing groups, and backreferences
  • Using regex for parsing, data extraction, and text manipulation tasks

Files

  • File I/O operations: reading, writing, appending, and file handling modes in Perl
  • Managing file attributes: permissions, ownership, metadata, and error handling strategies
  • Advanced file handling techniques: file locking, buffering, large file processing, and error recovery methods

Reports

  • Generating formatted text reports in Perl: utilizing templates, formatting, and layout design
  • Processing structured data into text-based reports: CSV, TSV, and tabular data formatting
  • Customizing reports with headers, footers, pagination, and data presentation techniques

Complex Data Structures

References

  • Complete understanding of references in Perl: creation, dereferencing, and nested data structures
  • Utilization of references for arrays, hashes, and multidimensional data structures
  • Memory management and handling circular references in Perl

Object Oriented Programming

  • Implementing object-oriented concepts using blessed references and creating objects

Classes

  • Object-oriented programming principles in Perl: classes, objects, methods, and constructors
  • Helper modules for defining classes

Sub-Classes

  • Implementing inheritance: subclassing, method overriding, and access control mechanisms
  • Polymorphism, interfaces, abstract classes, and encapsulation in Perl

Outside Core Perl

CPAN

  • Creating, importing, and using Perl modules for code reusability and organization
  • Managing CPAN modules: installation, searching, updating, and dependency handling
  • Utilizing namespaces, package variables, and lexical scoping in Perl modules

Unit Tests

  • Importance of unit testing in Perl: principles, methodologies, and test-driven development (TDD)
  • Perl testing frameworks: Test::Simple, Test::More, writing effective test cases, and test coverage analysis
  • Assertions, mock objects, and test suites for efficient Perl testing

File Parsing and Advanced Techniques**

  • Techniques for parsing structured and unstructured text files in Perl
  • Parsing JSON, XML, YAML, and other text-based formats using Perl
  • Data extraction, manipulation, and processing from text files in Perl applications

Advanced Techniques and Real-World Applications

  • Advanced Perl coding practices: optimizing code performance, improving readability, and maintainability
  • Error handling, debugging strategies, logging, and diagnostics in Perl applications
  • Real-world applications and case studies: leveraging Perl's strengths in diverse scenarios of software development

Lista med kurslänkar omnämnda i texten