The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Task::BeLike::FIBO -- Leonardo Pisano a.k.a. Fibonacci

SYNOPSIS

    cpan Task::BeLike::FIBO
    perldoc Task::BeLike::FIBO

DESCRIPTION

Hi! I am FIBO an italian mathematician. I graduated in 2005 at Università degli Studi di Genova and since then I work doing Business Intelligence and Web Analytics. My boss said: you need Perl. So I started using this language. I like many programming languages, but, Perl really help me to pay my rent.

This is a primary about my habits when I write Perl code.

PACKAGE GUIDELINES

Do not get crazy with automatic generators. I am a mathematician and a coder, not a corporation. Every package is different and has different needings. The followings are samples for files I usually need in a package.

Just use copy and paste and your brain!

The smack of a DRY KISS is not that bad.

Learn from nature: stay as minimal as possible.

WORKFLOW

  • Start a feature branch

        git checkout -b somefeature
  • Write documentation about new feature. Then write tests to check it and code to implement it.

  • Run tests

        prove -l --state=save
  • If some test does not pass, fix code and run tests that failed

        prove -l --state=save,failed
  • Merge feature branch and commit work

        git rebase master
        git checkout master
        git merge somefeature
        git push
  • Create new version package

        perl Makefile.PL
        make
        make test
        make manifest
        make dist
        make realclean
  • Upload to PAUSE

    Just do it manually! Yes, using your browser ... and remember to delete old files.

FILES

  • README.md

        My-Package
        ==========
    
        My-Package description ...
    
        See [online docs](https://metacpan.org/pod/My::Package)
    
        --------
        [![Build Status](https://travis-ci.org/fibo/My-Package-pm.png?branch=master)](https://travis-ci.org/fibo/My-Package-pm)
        [![Coverage Status](https://coveralls.io/repos/fibo/My-Package-pm/badge.png?branch=master)](https://coveralls.io/r/fibo/My-Package-pm?branch=master)
        [![CPAN version](https://badge.fury.io/pl/My-Package-pm.svg)](https://metacpan.org/pod/My::Package)
  • .travis.yml

        language: perl
        perl:
          - "5.18"
          - "5.16"
          - "5.14"
          - "5.12"
          - "5.10"
          - "5.8"
  • .gitignore

        .*
        *~
        !.gitignore
        !.travis.yml
        blib
        pm_to_blib
        Makefile*
        !Makefile.PL
        MANIFEST*
        !MANIFEST.SKIP
        *META.*
        *.tar.gz
  • Makefile.PL

        use strict;
        use warnings;
    
        use ExtUtils::MakeMaker 6.64;
    
        WriteMakefile(
            ABSTRACT_FROM => 'lib/My/Package.pm',
            VERSION_FROM  => 'lib/My/Package.pm',
            AUTHOR        => 'G. Casati <fibo@cpan.org>',
            NAME          => 'My-Package',
            META_MERGE => {
              resources => {
                homepage   => 'https://metacpan.org/pod/My::Package'
                license    => 'http://fibo.mit-license.org/',
                repository => 'http://github.com/fibo/My-Package-pm',
                bugtracker => 'http://github.com/fibo/My-Package-pm/issues',
            },
            PREREQ_PM => {
                # 'Some::Package' => '0',
                # 'Other::Package' => '1.2.3',
            },
            test => { TESTS => 't/*.t' },
            TEST_REQUIRES => {
                'Test::Compile' => '1',
                'Test::More' => '1',
                'Test::Pod'  => '1',
            },
        );
  • MANIFEST.SKIP

        ^\.
        .*\.old$
        \.tar\.gz$
        ^Makefile$
        ^MYMETA\.
        ^blib
        ^pm_to_blib

STUFF INCLUDED

  • CPAN

    See how to setup A CPAN client that works like a charm.

  • ExtUtils::MakeMaker version 6.64, cause I use the TEST_REQUIRES option.

  • Perl::Tidy

    Use Perl::Tidy defaults. Do not indent every source file automatically, indent by hand and use your creativity.

    See Perl section in My Vim preferences to see how you can use perltidy with Vim.

  • Test::Compile

    Create a t/_compile.t file

        use strict;
        use warnings;
        use Test::More;
        
        eval "use Test::Compile";
        Test::More->builder->BAIL_OUT(<<EOF) if $@;
        Test::Compile required for testing compilation
        EOF
    
        all_pm_files_ok();
  • Test::More

  • Test::Pod

    Create a t/_pod.t file

        use strict;
        use warnings;
        use Test::More;
        
        eval "use Test::Pod";
        Test::More->builder->BAIL_OUT(<<EOF) if $@;
        Test::Pod required for testing compilation
        EOF
        
        all_pod_files_ok();