# #!/usr/bin/perl snippet #! #!/usr/bin/env perl # Hash Pointer snippet . => # Function snippet sub sub ${1:function_name} { ${0} } # Conditional snippet if if (${1}) { ${0} } # Conditional if..else snippet ife if (${1}) { ${2} } else { ${0} } # Conditional if..elsif..else snippet ifee if (${1}) { ${2} } elsif (${3}) { ${4:# elsif...} } else { ${0} } snippet eif elsif (${1}) { ${0} } # Conditional One-line snippet xif ${1:expression} if ${2:condition}; # Unless conditional snippet unless unless (${1}) { ${0} } # Unless conditional One-line snippet xunless ${1:expression} unless ${2:condition}; # Try/Except snippet eval local $@; eval { ${1:# do something risky...} }; if (my $e = $@) { ${0:# handle failure...} } # While Loop snippet wh while (${1}) { ${0} } # While Loop One-line snippet xwh ${1:expression} while ${2:condition}; # C-style For Loop snippet cfor for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) { ${0} } # For loop one-line snippet xfor ${1:expression} for @${2:array}; # Foreach Loop snippet for foreach my $${1:x} (@${2:array}) { ${0} } # Foreach Loop One-line snippet fore ${1:expression} foreach @${2:array}; # Package snippet package package ${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}; ${0} 1; __END__ # Package syntax perl >= 5.14 snippet packagev514 package ${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`} ${2:0.99}; ${0} 1; __END__ #moose snippet moose use Moose; use namespace::autoclean; ${1:#}BEGIN {extends '${2:ParentClass}'}; ${0} # parent snippet parent use parent qw(${0:Parent Class}); # Read File snippet slurp my $${1:var} = do { local $/; open my $file, '<', "${2:file}"; <$file> }; ${0} # strict warnings snippet strwar use strict; use warnings; # older versioning with perlcritic bypass snippet vers ## no critic our $VERSION = '${0:version}'; eval $VERSION; ## use critic # new 'switch' like feature snippet switch use feature 'switch'; # Anonymous subroutine snippet asub sub { ${0} } # Begin block snippet begin BEGIN { ${0} } # call package function with some parameter snippet pkgmv __PACKAGE__->${1:package_method}(${0:var}) # call package function without a parameter snippet pkgm __PACKAGE__->${0:package_method}() # call package "get_" function without a parameter snippet pkget __PACKAGE__->get_${0:package_method}() # call package function with a parameter snippet pkgetv __PACKAGE__->get_${1:package_method}(${0:var}) # complex regex snippet qrx qr/ ${0:regex} /xms #simpler regex snippet qr/ qr/${0:regex}/x #given snippet given given ($${1:var}) { ${2:# cases} ${0:# default} } # switch-like case snippet when when (${1:case}) { ${0} } # hash slice snippet hslice @{ ${1:hash} }{ ${0:array} } # map snippet map map { ${0: body } } ${1: @array } ; # Pod stub snippet ppod =head1 NAME ${1:ClassName} - ${2:ShortDesc} =head1 SYNOPSIS use $1; ${3:# synopsis...} =head1 DESCRIPTION ${0:# longer description...} =head1 INTERFACE =head1 DEPENDENCIES =head1 SEE ALSO # Heading for a subroutine stub snippet psub =head2 ${1:MethodName} ${0:Summary....} # Heading for inline subroutine pod snippet psubi =head2 ${1:MethodName} ${0:Summary...} =cut # inline documented subroutine snippet subpod =head2 $1 Summary of $1 =cut sub ${1:subroutine_name} { ${0} } # Subroutine signature snippet parg =over 2 =item Arguments =over 3 =item C<${1:DataStructure}> ${2:Sample} =back =item Return =over 3 =item C<${0:...return data}> =back =back # Moose has snippet has has ${1:attribute} => ( is => '${2:ro|rw}', isa => '${3:Str|Int|HashRef|ArrayRef|etc}', default => sub { ${4:defaultvalue} }, ${0:# other attributes} ); # override snippet override override ${1:attribute} => sub { ${2:# my $self = shift;}; ${0:# my ($self, $args) = @_;}; }; # use test classes snippet tuse use Test::More; use Test::Deep; # (); # uncomment to stop prototype errors use Test::Exception; # local test lib snippet tlib use lib qw{ ./t/lib }; #test methods snippet tmeths $ENV{TEST_METHOD} = '${0:regex}'; # runtestclass snippet trunner use ${0:test_class}; $1->runtests(); # Test::Class-style test snippet tsub sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) { my $self = shift; ${0} } # Test::Routine-style test snippet trsub test ${1:test_name} => { description => '${2:Description of test.}'} => sub { my ($self) = @_; ${0} }; #prep test method snippet tprep sub prep${1:number}_${2:test_case} :Test(startup) { my $self = shift; ${0} } # cause failures to print stack trace snippet debug_trace use Carp; # 'verbose'; # cloak "die" # warn "warning" $SIG{'__DIE__'} = sub { require Carp; Carp::confess }; snippet dump use Data::Dump qw(dump); warn dump ${1:variable} snippet subtest subtest '${1: test_name}' => sub { ${2: #body} };