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

NAME

Evo - Evo - the next generation development framework

VERSION

version 0.0405

DESCRIPTION

This framework opens a new age of perl programming It provides rewritten and postmodern features like

SYNOPSYS

  # enables strict, warnings, utf8, :5.22, signatures, postderef
  use Evo;

XS

This module ships with optional C parts for performance. You can avoid installing them by providing PUREPERL_ONLY environmental variable

  PUREPERL_ONLY=1 cpanm Evo

STATE

This module is under active development. It changes often and a lot! Get involved https://github.com/alexbyk/perl-evo

Also there are many gaps in documentation.

VIM

Perl Evo gif

Vim ultisnips with Evo support can be found here: https://github.com/alexbyk/vim-ultisnips-perl

IMPORTING

Load Module and call import method, emulating caller.

  use Evo 'Foo';                 # use Foo
  use Evo 'Foo ()';              # use Foo();
  use Evo 'FooClass foo1 foo2';  # use FooClass qw(foo1 foo2);

Used to make package header shorter

  use Evo '-Eval *; My::App';    # use Evo::Eval '*'; use My::App;

All examples above also import string; experimental and other from Evo::Default

SHORTCUTS

  :: => (append to current)
  /:: => (append to parent)
  - => Evo (append to Evo)

shortcuts

Shortcuts are used to make life easier during code refactoring (and your module shorter) in Evo::Export and "with" in Evo::Class

- is replaced by Evo

  use Evo '-Promise promise'; # "Evo::Promise promise"

: and :: depend on the package name where they're used

:: means relative to the current module as a child

  package My::App;
  use Evo '::Bar'; # My::App::Bar

/ means parent and /:: means it's a sibling module (child of the parent of the current module)

  package My::App;
  use Evo '/::Bar'; # My::Bar

IMPORTS

With or without options, use Evo loads Evo::Default:

-Default

  use strict;
  use warnings;
  use feature ':5.22';
  use experimental 'signatures';
  use feature 'postderef';

I have decided that using 5.22 and some of the experimental features it brings has many benefits and is worth it. This list will be expanded in the future, I hope

-Loaded

This marks inline or generated classes as loaded, so can be used with require or use. So this code won't die. Used for test and examples in the documentation

  require My::Inline;

  {
    package My::Inline;
    use Evo -Loaded;
    sub foo {'foo'}
  }

AUTHOR

alexbyk.com

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by alexbyk.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.