Arthas::Defaults::520 - Defaults for coding with perl 5.20 - Do not use if you're not Arthas


    use Arthas::Defaults;


It's like saying:

    use v5.20;
    use utf8;
    use warnings;
    no warnings 'uninitialized';
    use experimental 'signatures';
    use experimental 'postderef';
    use Carp qw/carp croak confess cluck/;
    use Try::Tiny;

Might change without notice, at any time. DO NOT USE!

use v5.20

This is actually use feature ':5.20'. It imports some perl 5.10 -> 5.20 semantics, such as strict, given-when syntax, Unicode strings, ... See feature documentation and source code for more information.

use utf8

This is NOT related to handling UTF-8 strings or input/output (see use feature 'unicode_strings' imported with use v5.20 for something more related to that).

use utf8 is imported in order to allow UTF-8 characters inside the source code: while using UTF-8 in the source is not standard procedure, it happens to me every now and then. Also, enabling this feature does no harm if you're using a recent version of perl, so why not enable it?

use warnings FATAL => 'all'

Warnings are useful, who wouldn't want them?

However, if they are not treated as fatal errors, they are often ignored, making them pointless. So, be fatal!

no warnings 'uninitialized'

Well, most warnings are useful. The ones regarding uninitialized (undef) variables are a bit of a pain. Writing a code such as this:

    my $str;
    if ( $str eq 'maya' ) {
        say 'Maya!';

would emit a warning, thus forcing you to write:

    my $str;
    if ( defined $str && $str eq 'maya' ) {
        say 'Maya!';

which is boring enough to justify suppressing these warnings.

use Carp qw/carp croak confess cluck/

These functions are very useful to show error details better than that of die() and warn().

use experimental 'signatures'

We waited 20 years to get these, so it's time use them.

use experimental 'postderef'

Even though I still have some doubts on this, it seems a nice feature.

use Try::Tiny

Try::Tiny provides minimal try/catch/finally statements, which make for interesting sugar and a few nice features over eval.


Michele Beltrame,


This library is free software. You can redistribute it and/or modify it under the same terms as perl itself.