<!DOCTYPE html>
<html lang="en-us">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">

  <link rel="canonical" href="https://perlmaven.com/" />

  
  

  <link href="/atom" rel="alternate" type="application/atom+xml" title ="Perl Maven" />

  <script>
    var user_info = ;
  </script>

  <!-- Google recommended indication of translated versions -->
  
    <link rel="alternate" hreflang="x-default" href="https://perlmaven.com/" />
    
       <link rel="alternate" hreflang="fr" href="https://fr.perlmaven.com/" />
    
       <link rel="alternate" hreflang="ko" href="https://ko.perlmaven.com/" />
    
       <link rel="alternate" hreflang="pt" href="https://br.perlmaven.com/" />
    
       <link rel="alternate" hreflang="de" href="https://de.perlmaven.com/" />
    
       <link rel="alternate" hreflang="en" href="https://perlmaven.com/" />
    
       <link rel="alternate" hreflang="te" href="https://te.perlmaven.com/" />
    
       <link rel="alternate" hreflang="ru" href="https://ru.perlmaven.com/" />
    
       <link rel="alternate" hreflang="id" href="https://id.perlmaven.com/" />
    
       <link rel="alternate" hreflang="it" href="https://it.perlmaven.com/" />
    
       <link rel="alternate" hreflang="zh-Hans" href="https://cn.perlmaven.com/" />
    
       <link rel="alternate" hreflang="zh-Hant" href="https://tw.perlmaven.com/" />
    
       <link rel="alternate" hreflang="cs" href="https://cs.perlmaven.com/" />
    
       <link rel="alternate" hreflang="tr" href="https://tr.perlmaven.com/" />
    
       <link rel="alternate" hreflang="pl" href="https://pl.perlmaven.com/" />
    
       <link rel="alternate" hreflang="he" href="https://he.perlmaven.com/" />
    
       <link rel="alternate" hreflang="es" href="https://es.perlmaven.com/" />
    
       <link rel="alternate" hreflang="ro" href="https://ro.perlmaven.com/" />
    
  


  <title>Perl Maven - for people who want to get the most out of programming in Perl</title>
  <meta name="description" content="Find answers to all your Perl related questions on the Perl Maven site. Watch the beginner and advanced video series. Learn about web application developmen in Perl.">
  <meta name="author" content="">

  <!-- The Open Graph protocol -->
  <meta property="og:title" content="Perl Maven - for people who want to get the most out of programming in Perl"/>
  <meta property="og:type" content="article"/>
  
      <meta property="og:image" content="/img/perl_maven_150x212.png"/>
  
  <meta property="og:site_name" content="Perl Maven"/>
  <meta property="og:description" content="Find answers to all your Perl related questions on the Perl Maven site. Watch the beginner and advanced video series. Learn about web application developmen in Perl."/>
  

  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css" rel="stylesheet">


  <link href="/css/style.css?20210507.1" rel="stylesheet">
  
  <link href="/static/css/site.css?20210507.1" rel="stylesheet">

  <script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>


  <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
  <script src="/javascripts/perlmaven.js?20210507.1"></script>
  <script src="/js/maven.js"></script>

  <meta name="twitter:card" content="summary_large_image" />
  <meta name="twitter:site" content="@szabgab" />
  <meta name="twitter:creator" content="@szabgab" />
  <meta name="twitter:title" content="Perl Maven - for people who want to get the most out of programming in Perl" />
  <meta name="twitter:description" content="Find answers to all your Perl related questions on the Perl Maven site. Watch the beginner and advanced video series. Learn about web application developmen in Perl." />
  
     <meta name="twitter:image" content="/img/perl_maven_150x212.png" />
  
</head>
<body>

<div class="container-fluid">
  <div class="row">
    <div class="col-md-12">
      <nav class="navbar navbar-default navbar-fixed-top navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="/">Perl Maven</a>
    </div>


    <div class="collapse navbar-collapse" id="navbar">
      
        <ul class="nav navbar-nav   ">
                        <li><a href="/perl-tutorial">Perl Tutorial</a></li>
            

<!--
            
-->

            

            
                        <li><a href="/pro">Pro</a></li>
            

<!--
            
-->

            

            
          
            

<!--
            
              
                <li><a href="/pm/login">Login</a></li>
                <li><a href="/pm/register">Register</a></li>
              
            
-->

            

            
                        <li><a href="/books">Books</a></li>
            

<!--
            
-->

            

            
          
        </ul>
      
        <ul class="nav navbar-nav navbar-right  ">
                        <li><a href="/keywords">Type keyword:</a></li>
            

<!--
            
-->

            

            
          
            

<!--
            
-->

            
              <li><form id="search_form">
                     <input id="search_box" type="text" data-provide="typeahead" data-items="4" aria-label="Enter your search term">
                  </form>
              </li>
            

            
                        <li><a href="/archive">Archive</a></li>
            

<!--
            
-->

            

            
                        <li><a href="/about">About</a></li>
            

<!--
            
-->

            

            
          
            

<!--
            
-->

            

            
              <li><a href="/atom" rel="alternate" type="application/atom+xml"><img src="/img/feed-icon16x16.png" id="atom-icon" alt="Atom feed" /></a></li>
            
          
        </ul>
      
    </div>
  </div>
</nav>


    </div>
  </div>

  <div class="row">
    <div class="col-md-2" id="left-column">

            
         
            <div class="category_img">
               <a href="/"><img src="/img/perl_maven_150x212.png" alt="Perl Maven" title="Perl Maven" /></a>
            </div>
         
      


      


    </div>
    <div class="col-md-7" id="content">




<div id="show_content">


<style>
ul.horizontal {
   list-style-type: none;
<p>
}
ul.horizontal li {
    display: inline-block;
    width: 25%;
}
</style>
<p>
<div class="main-content">
<p>
<h2>Perl tutorials and courses</h2>
<p>
<ul>
  <li><a href="/perl-tutorial">Perl Tutorial</a> just a plain Perl tutorial. Nothing fancy.</li>
  <li><a href="/beginner-perl-maven-video-course">Beginner Perl Maven video course</a> slidecast of the training material.</li>
  <li><a href="/advanced-perl-maven-video-course">Advanced Perl Maven video course</a> mixed slidecasts, screencasts and plain articles.</li>
  <li><a href="/testing">Test Automation using Perl</a> for people who really want to sleep well.</li>
</ul>
<p>
<p>
<h2>Modern Perl Web Frameworks</h2>
<p>
<ul>
  <li><a href="/mojolicious">Mojolicious</a> light-weight web framework with rainbows and unicorns.</li>
  <li><a href="/dancer">Perl Dancer</a> light-weight web framework to rock.</li>
  <li><a href="/catalyst">Catalyst</a> The MVC web framework of Perl.</li>
  <li><a href="/psgi">PSGI/Plack</a>, the low-level superglue between Perl web application frameworks and web servers.</li>
  <li><a href="/cgi">CGI</a>, the Common Gateway Interface, for old-school web applications. </li>
</ul>
<p>
<h2>Object Oriented Perl</h2>
<p>
<ul>
  <li><a href="/oop">OOP</a>, the classic way to write Object Oriented Perl code.</li>
  <li><a href="/moo">Moo</a>, the Minimalist Object Oriented system for Perl.</li>
  <li><a href="/moose">Moose</a>, the 'post modern' Object Oriented system for Perl.</li>
</ul>
<p>
<h2>Other Series</h2>
<p>
<ul>
  <li><a href="/mongodb">Perl and MongoDB</a>, the NoSQL database used in Perl programs.</li>
  <li><a href="/anyevent">AnyEvent</a>, asynchronous programming.</li>
  <li><a href="/net-server">Net::Server</a> the framework to build TCP/IP servers.</li>
  <li><a href="/metacpan">MetaCPAN</a> -  articles for CPAN users, CPAN authors, client developers, and MetaCPAN developers.</li>
  <li><a href="/tv">Perl Maven TV Show</a> is a collection of interviews with Perl developers.</li>
  <li><a href="/svg">SVG - Scalable Vector Graphics</a></li>
</ul>
<p>
<h2>Projects and Collections</h2>
<p>
<ul>
  <li><a href="/search-cpan-org">The search.cpan.org cloning project</a> - Implementing a CPAN search engine using Plack/PSGI with MetaCPAN back-end.</li>
  <li><a href="/phonebook-with-mongodb-and-moo">Command line phonebook with MongoDB and Moo</a></li>
  <li><a href="/indexing-emails-in-an-mbox">Indexing e-mails in an mbox</a></li>
  <li><a href="https://code-maven.com/counter">Counter Examples</a> Various solution on the simple task of building a counter.</li>
  <li><a href="/becoming-a-co-maintainer">Becoming a co-maintainer of a CPAN module - refactoring a CPAN module</a></li>
  <li><a href="/perl-critic">Perl::Critic</a> lint-like static analyzer for Perl.</li>
  <li><a href="/markua">Implementing a Markua Parser in Perl 5</a></li>
</ul>
<p>
<p>
<h2>Code-Maven series</h2>
<ul>
  <li><a href="https://rust.code-maven.com/">Rust Maven</a></li>
  <li><a href="https://code-maven.com/angularjs">Angular JS</a></li>
  <li><a href="https://code-maven.com/ansible">Ansible</a></li>
  <li><a href="https://code-maven.com/flask">Flask</a>, the Python microframework.</li>
  <li><a href="https://code-maven.com/groovy">Groovy</a>, the programming language used for Jenkins pipelines.</li>
  <li><a href="https://code-maven.com/handlebars">Handlebars</a> the HTML templating system written in JavaScript.</li>
  <li><a href="https://code-maven.com/java">Java</a></li>
  <li><a href="https://code-maven.com/javascript">JavaScript</a></li>
  <li><a href="https://code-maven.com/jenkins">Jenkins</a>, the automation server used for Continuous Integration and Continuous Delivery.</li>
  <li><a href="https://code-maven.com/linux">Linux</a></li>
  <li><a href="https://code-maven.com/nodejs">NodeJS</a> - Server side JavaScript</li>
  <li><a href="https://code-maven.com/php">PHP</a></li>
  <li><a href="https://code-maven.com/python">Python</a></li>
  <li><a href="https://code-maven.com/ruby">Ruby</a></li>
  <li><a href="https://code-maven.com/svg">SVG</a>, Scalable Vector Graphics examples in JavaScript and Python.</li>
</ul>
<p>
</div>
<p>
<div class="main-content">
If you are a <b>beginner</b>, or would like to refresh your Perl programming knowledge,
you can go over the <a href="/perl-tutorial">Perl tutorial</a> or watch the
<a href="/beginner-perl-maven-video-course">Beginner Perl Maven video course</a>.
</div>
<p>
<p>
<div class="main-content">
If you need to <b>maintain a large piece of software</b> written in Perl by other people in the last 5-10-15 years,
that's a challenge. Especially if you did not get proper training in Perl. You are probably limited to
a specific and old version of Perl. Check out, the <a href="/perl-tutorial">Perl tutorial</a>!
You can probably skip the part about installing Perl, but the rest of the tutorial will be relevant for you.
</div>
<p>
<div class="main-content">
Perl is often used in <b>Test Automation</b>. If you work in this field, or if you'd like to work in this field
(it is much more fun to find bugs in other people's code than in yours :), then you can read the <a href="/perl-tutorial">Perl tutorial</a>
and the series on <a href="https://perlmaven.com/testing">Test Automation using Perl</a>.
</div>
<p>
<div class="main-content">
If you build <b>new web applications</b> - either privately or inside a company - you can start by reading the
article comparing <a href="/perl-cgi-mod-perl-psgi">CGI, mod_perl and PSGI</a>. From there you can go on reading
the generic <a href="/perl-tutorial">Perl tutorial</a> or the articles on
<a href="/mojolicious">Mojolicious</a>,  <a href="/dancer">Perl Dancer</a>, <a href="/catalyst">Catalyst</a>,
<a href="/psgi">PSGI/Plack</a>, or even <a href="/cgi">CGI</a>, the Common Gateway Interface, for old-school web applications.
</div>
<p>
<div class="main-content">
In the off chance you are interested in topics other than Perl, especially related to Test Automation, Continuous
Integration, Continuous Deployment, DevOps, then you are welcome to check out the list of
<a href="https://hostlocal.com/">DevOps related training courses</a>.
</div>
<p>


<h2>Recent Articles</h2>

  <div class="abstract">
  <h2><a href="/convert-markdown-to-html">Convert Markdown to HTML</a></h2>
  <p>
  <p>
I have lots of documents written in Markdown format and I was looking for a way to convert them to HTML.
<p>

  <br>
  <a href="/convert-markdown-to-html">Convert Markdown to HTML</a>
  </p>
  </div>
  <hr />

  <div class="abstract">
  <h2><a href="/curious-case-of-implicit-return">The curious case of implicit return</a></h2>
  <p>
  <p>
My son works at a company where they analyze source code and report on potential <a href="https://privya.ai/">data privacy violations</a>.
For this they need to parse source code in various programming languages. He mentioned that one day they might need to support Perl too.
I thought about the difficulties in parsing Perl and one case came to my mind was the strange implicit return from a function that Perl has.
<p>
Then I also thought that <a href="https://www.rust-lang.org/">Rust</a> also has some strange ideas. BTW Do you know that I have a new web site called
<a href="https://rust.code-maven.com/">Rust Maven</a> where I write about Rust? Now you know.
<p>
Anyway, back to Perl:
<p>

  <br>
  <a href="/curious-case-of-implicit-return">The curious case of implicit return</a>
  </p>
  </div>
  <hr />

  <div class="abstract">
  <h2><a href="/selectively-ignore-warnings">Selectively ignore warnings (turn them off with no warnings)</a></h2>
  <p>
  <p>
I recommend <a href="/always-use-warnings">always turning warnings on</a> from the beginning of each Perl file.
<p>
However sometime we might want to avoid some warnings. We can selectively turn off warnings inside lexical scopes, that is, till the end of the current pair of curly braces.
<p>

  <br>
  <a href="/selectively-ignore-warnings">Selectively ignore warnings (turn them off with no warnings)</a>
  </p>
  </div>
  <hr />





</div>

    </div>



    <div class="col-md-3">
      <div id="right-side">
        
                       
            
                
                    
                       <div class="rightbox">
                         


                       </div>
                    
                    
                
            
                
                    
                       <div class="rightbox">
                         
  
  <div id="sites">
    <ul>
    
       <li>
          <a href="https://id.perlmaven.com/">Bahasa Indonesia</a>
          
       </li>
    
       <li>
          <a href="https://de.perlmaven.com/">Deutsch</a>
          
       </li>
    
       <li>
          <a href="https://perlmaven.com/">English</a>
          <span class="glyphicon glyphicon-ok"></span>
       </li>
    
       <li>
          <a href="https://es.perlmaven.com/">Español</a>
          
       </li>
    
       <li>
          <a href="https://fr.perlmaven.com/">Français</a>
          
       </li>
    
       <li>
          <a href="https://it.perlmaven.com/">Italiano</a>
          
       </li>
    
       <li>
          <a href="https://pl.perlmaven.com/">Polish</a>
          
       </li>
    
       <li>
          <a href="https://br.perlmaven.com/">Português</a>
          
       </li>
    
       <li>
          <a href="https://ro.perlmaven.com/">Română</a>
          
       </li>
    
       <li>
          <a href="https://tr.perlmaven.com/">Türkçe</a>
          
       </li>
    
       <li>
          <a href="https://cs.perlmaven.com/">Čeština</a>
          
       </li>
    
       <li>
          <a href="https://ru.perlmaven.com/">Русский</a>
          
       </li>
    
       <li>
          <a href="https://he.perlmaven.com/">עברית</a>
          
       </li>
    
       <li>
          <a href="https://te.perlmaven.com/">తెలుగు</a>
          
       </li>
    
       <li>
          <a href="https://tw.perlmaven.com/">正體中文</a>
          
       </li>
    
       <li>
          <a href="https://cn.perlmaven.com/">简体中文</a>
          
       </li>
    
       <li>
          <a href="https://ko.perlmaven.com/">한국어</a>
          
       </li>
    
       <li><hr></li>
       <li><a href="https://perlmaven.com/about#translations">about the translations</a></li>
    </ul>
  </div>
  


                       </div>
                    
                    
                
            
                
                    
                       <div class="rightbox">
                         


                       </div>
                    
                    
                
            
         
      </div>
    </div><!-- end of right column -->

  </div>
</div>

<div id="modal"></div>


<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-BLRW8KB16K"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-BLRW8KB16K');
</script>





</body>
</html>



