
Introduction video explaining the course target audience and what topics will be covered in this course.
Overview of Perl programming language and discussion on why it is beneficial to learn Perl.
Introduction to course section containing overview of operating systems and tools we will use to get started with Perl.
Learn how to get started with Perl on Windows or Mac OS using Docker Desktop client.
Learn how to get started with Perl on Windows environment using Strawberry Perl.
Learn how to install Perl on Linux and Mac OS using Perlbrew, Perl's version manager.
Learn how to install Visual Studio Code code editor and use integrated terminal to run Perl code.
Learn how to run Perl code via command-line interface.
Understand Perl script file structure and the meaning of most commonly used directives.
Learn what is scalar data type and how it is used in Perl.
Learn how to easily debug Perl data structures using Data::Dumper module.
Learn what is array data type and how it is used in Perl.
Learn what is hash data type and how it is used in Perl.
In this video we will explore what are references in Perl. We will also learn how to create, get and work with various data type references. Part 1/2.
In this video we will explore what are references in Perl. We will also learn how to create, get and work with various data type references. Part 2/2.
Learn how to define and invoke subroutines, also know as functions, in Perl. We will also explore variable scope in subroutines.
We will learn alternative approach on how to construct and work with subroutines in Perl using subroutine signatures.
Learn about different variable scopes in Perl and how to access variables across Perl script files.
We will learn the basics of how to throw and handle exceptions in Perl using out of the box solution. Later in this course we will learn how to create custom exception types and how to handle different named exceptions.
Learn about various logical operators in Perl - how to compare different variable types and how to assign values conditionally.
Learn how to run Perl code using various conditional statements.
Learn how to write and use different iterative statements in Perl.
Brief introduction to using regular expressions in Perl. Regular expressions are one of the most powerful features of Perl. In the following video you will learn the basics of writing and using regular expressions in Perl.
Perl has large amount of built-in functions available out of the box. In this video we will learn how to use some of the most popular built-in functions in Perl.
For list of all available functions in Perl please refer to resource section.
There are many reserved special variables you can use in Perl that give you access to powerful functionality. In this video we will explore some of these special variables to give you a brief insight into what they can do.
For full list of special variables in Perl please refer to lecture resources.
In this video we will learn how to write object-oriented code using Perl's out of the box OOP solution.
In the following video we will learn what is the difference between use and require keywords in Perl. We will also learn how to require code in runtime, and what is the difference between loading modules in compile time.
In the following video we will learn how to export and import functions from Perl modules. We will also learn about different method types and the argument structure for each of these method types.
Explore Perl's module repository https://metacpan.org/ and learn how to install Perl modules using CPANM.
In this video we will explore a better way how to throw and handle exceptions in Perl using Exception::Class and Try::Tiny::SmartCatch modules. We will learn how to install the previously mentioned modules and how to create various custom exceptions, and handle our code logic based on exception type.
In this video we will learn how to make web requests using Mojo::UserAgent module. We will also explore promises in Perl and how to make asynchronous web requests.
In the following video we will learn how to write, append to and read files using Perl's out of the box solution using file handles.
In the following video we will explore a better solution on how to work with files in Perl using Path::Tiny module. We will explore common methods to read and write files using the module interface to abstract low-level logic when working with files in Perl.
In this video we will explore how to run system commands, for example to create and list files, directly from Perl code through various methods.
In this video we will setup and explore Test::Most framework to be able to unit test our Perl code.
In the following video we will learn how to test basic data types in Perl along with keywords available to us to validate variable state.
In this video we will explore how to test more complicated data structures like references and how to validate and compare deeply nested data structures.
In this video we will learn how test that correct exceptions are thrown by our code.
In the following video we will explore how to organise our tests into subtests so that our tests can be laid out in structured format.
In this video we will learn how to create test blocks to handle unimplemented code logic or skip known test failures using SKIP and TODO blocks.
In the following video we will learn how to add comments and debug our tests through various diagnostics keywords.
In this video we will learn how to test object oriented Perl code and make sure our modules are loaded as expected.
In this lecture we will learn how to create our first class using Mouse OOP framework.
In the following video we will learn the basics of Mouse class attributes.
In this lecture we will learn how to extend our Mouse class attribute type definitions and create our own custom types.
In this video we will learn about advanced concepts of Mouse class attributes allowing us to extend the attribute functionality even further.
In the following video we will learn the basics of creating Mouse class methods.
In the following video we will learn how to extend our Mouse class method functionality even further.
In this video we will learn how to clean up our Mouse class imports and why we would want to clean automatically imported methods in our classes.
In this video we will learn how to hook into various Mouse class build phases and implement code logic that will be triggered at different object life-cycles.
In the following video we will look at basics of Mouse class inheritance and how we can extend the class functionality by inheriting code logic from other classes.
We will have a look at what are roles in Mouse class, how to create roles, compose a class using roles and why roles can be more favoured over using inheritance.
We will learn about the Mouse meta class and how we can modify our classes during runtime by adding new attributes and methods on the fly.
In this video we will explore what it means to make our classes immutable and how to mark our classes as immutable.
In the following video we will cover what is ORM and why would you definitely should considering using an ORM solution, such as Perl's DBIx framework.
In this video we will learn how to generate DBIx ORM classes via a utility module DBIx::Class::Schema::Loader. To follow along the setup instructions, please refer to the resources attached.
In the following video we will look at how to connect to our database using DBIx::Schema.
SQL to fix password error:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
In the following video we will go through Schema, ResultSet and Result classes, and what do they mean in the world of DBIx.
In this video we will look at how to debug the underlying queries produced by DBIx when interacting with Result and ResultSet instances.
In this video we will look at how we can read data from our database using DBIx.
In the following video we will look at how to construct a bit more complex queries using DBIx to read data from our database.
In this video we will take a look at how to provide filtering conditions to DBIx to apply conditions such selecting specific columns, using HAVING clause and more.
In this video we will look at how to create data in our database using DBIx.
In the following video we will explore how to create data in bulk using DBIx.
In this video we will explore how to update data in our database using DBIx.
In this video we will explore how to delete data from our database using DBIx.
In the following video we will explore how to access relational data through relationships found in the DBIx Result classes.
In the following video we will learn how to prefetch data in our Result instances using DBIx.
In this video we will look at how we can create relational data using DBIx.
In this video we will explore how to search, update and delete data using DBIx.
In the following video we will learn how to construct subqueries using DBIx.
In the following video we will learn how to create and use custom relationships in our DBIx Result classes.
In this video we will learn how to install custom DBIx Result class methods that we can call on our Result instances.
In the following video we will explore how to create custom DBIx ResultSet methods for specific ResultSet classes and also how to create a global base ResultSet class from which other ResultSet classes can inherit to reuse common methods.
In this video we will explore how to paginate our results using DBIx via DBIx::Class::ResultSet::Pager.
In the following video we will learn how to use a utility module called DBIx::Class::ResultClass::HashRefInflator to retrieve raw data from constructed ResultSets.
In this video will learn how to start and commit, or rollback, database transactions using DBIx.
In the following video we will explore how to create our custom Result classes to encapsulate complicated SQL. We will also learn how to install custom relationships that we can use on our custom views.
Unlock the power of Perl programming with our comprehensive course designed for beginners and intermediate programmers. Dive into the essentials of Perl, from basic syntax to advanced features, and gain a solid foundation in this versatile language.
Learn how to write clean, efficient, and maintainable code by mastering the fundamentals of unit testing in Perl.
Explore the Mouse Object-Oriented Programming (OOP) framework to create scalable and well-structured applications. This lightweight yet powerful framework will help you implement OOP principles effectively in your Perl projects.
Master Perl's DBIx ORM framework, designed to streamline your database interactions and boost your coding efficiency.
By the end of this course, you'll be equipped with the skills to build, test, and maintain Perl applications with confidence. Whether you're starting your programming journey or looking to enhance your Perl expertise, this course is your gateway to becoming a proficient Perl developer.
Why Learn Perl in 2024?
Perl remains a powerful and versatile language in 2024, offering unique advantages for modern programming challenges. Its strong text-processing capabilities make it ideal for tasks involving data manipulation, web scraping, and system administration. Perl's comprehensive CPAN library provides a vast array of modules, saving time and effort in development. With its robust support for regular expressions and efficient scripting, Perl is perfect for rapid prototyping and automation.
Additionally, learning Perl enhances your problem-solving skills and broadens your programming toolkit. As many legacy systems and established companies still rely on Perl, mastering it can open doors to specialised job opportunities and career growth. Embrace the power of Perl and stay ahead in the ever-evolving tech landscape.
Is This Course for You?
Absolutely! This course is perfect for you if:
Beginners: You're new to programming and want to start with a language known for its versatility and powerful text-processing capabilities.
Intermediate Programmers: You have some coding experience and want to expand your skill set with Perl, a versatile and efficient scripting language.
System Administrators: You need to automate tasks, manage files, and handle system operations efficiently using Perl.
Data Analysts: You’re looking to leverage Perl's strong text-manipulation and data-parsing abilities to streamline your workflows.
Students and Hobbyists: You have a keen interest in learning a new programming language that is both practical and fun.
What Will This Course Teach Me?
In this course, you will gain a comprehensive understanding of Perl programming and its practical applications. You will learn:
Perl Fundamentals: Grasp the core concepts of Perl, including syntax, data structures, regular expressions, and file handling.
Object-Oriented Programming (OOP): Understand the principles of OOP and how to implement them in Perl to create modular and reusable code.
Object-Relational Mapping (ORM): Understand the principles of ORM and how to implement them in Perl to create modular and reusable code to interact with your database.
Unit Testing: Master the techniques of unit testing in Perl to ensure your code is reliable, maintainable, and bug-free.
Mouse OOP Framework: Dive into the Mouse OOP framework, a lightweight yet powerful tool, to build scalable and well-structured applications.
By the end of this course, you'll be equipped to write efficient Perl scripts, design robust object-oriented programs, and implement comprehensive unit tests, all while leveraging the power of the Mouse framework.
About The Instructor
I am a passionate Senior Backend Developer and API Team Lead with a BSc degree in Computer Science. My journey began with a fascination for understanding how computers work, evolving from creating basic web templates in HTML, CSS, and JavaScript to mastering complex backend technologies.
I specialise in building large-scale Perl applications using frameworks like Mojolicious, Mouse, and DBIx, handling thousands of requests per second. My expertise extends to AWS services (e.g., EC2, Cognito, API Gateway, Lambda), Docker, MySQL/PostgreSQL, OpenAPI, RabbitMQ, and caching solutions such as Redis and Memcached. My diverse skill set and dedication drive my continuous enthusiasm for backend development.