SlideShare a Scribd company logo
Effective Text Editing
for Perl Developers
Ynon Perek
ynon@ynonperek.com
Agenda
What’s Wrong with my editor?
Can you fix it?
Should I Switch Editors?
! text editors slow you down
Keynote Template
Reasons to be angry
• A text editor always slows you down
• Some are worse than others
type less,
Keynote Template
more"
Some annoyances with “naive”
text editors
• Writing code
• Navigating in code
• Testing code
• Running code
1 while(<>) {!
2 !
3 }!
4 !
5 sub doStuff {!
6 !
7 }!
8 !
9 for ( my $i=0; $i < 10; $i++ ) {!
10 !
11 }
Code is written in sentences, 

not characters
Code uses boilerplates
1 package BlogPost;!
2 use Moose;!
3 use v5.18;!
4 !
5 !
6 1;
1 <!DOCTYPE html>!
2 <html>!
3 <head>!
4 <meta charset="utf-8" />!
5 <title>test</title>!
6 </head>!
7 <body>!
8 !
9 </body>!
10 </html>
Code has context
1 use strict;!
2 use warnings;!
3 use List::MoreUtils qw/pairwise/;!
4 use v5.18;!
5 !
6 my @foo, @bar;!
7 my %h = pairwise(@foo, @bar);
you’ll probably want @foo or @bar here
Code can be repetitive
1 my $mail = {!
2 john => 'john@gmail.com',!
3 bob => 'bob@walla.co.il',!
4 barbara => 'bar@gmail.com',!
5 george => 'g@george.com',!
6 };!
7 !
1 my $mail = {!
2 john => 'john@gmail.com',!
3 bob => 'bob@walla.co.il',!
4 barbara => 'bar@gmail.com',!
5 george => 'g@george.com',!
6 };!
7 !
The more you type…
• you’ll waste more time
• you’ll make more mistakes
• you’ll be less happy
A text editor can be a friend
• In writing:
• Code snippets
• File templates
• Context aware auto complete
• Verify syntax and find errors early
A text editor can be a friend
• While working on a project:
• File navigation
• Documentation
• Quickly find what you need
A text editor can be a friend
• While running and testing:
• Reminds you to run unit tests
• Helps you run complex flows
Agenda
What’s Wrong with my editor?
Can you fix it?
Should I Switch Editors?
Fixing a text editor
• File templates
• Code snippets
• Omni complete
• Easy project navigation + documentation
• Running + testing
We’ll use …
#janus
A fully customisable
text editor
A collection of plugins
and settings for vim to
get started
+
Getting Started (Ubuntu)
sudo apt-get install vim-gnome
Install vim
curl -Lo- https://bit.ly/janus-bootstrap | bash
Install janus
What We Got
• Line and column numbers
• Nicer colours and better defaults
What We Got
• Find in files - ack
• Fuzzy file finder
• Easy code comments
• Project drawer
• Tab completion
• Basic snippets
Now let’s get to work
Demos - Editing
• Adding new snippets with snipMate
• File templates with vim-template
• Align perl hashes
• Perl omni-complete
• Auto-close parens
Plugins Installed
• Viewdoc:

http://www.vim.org/scripts/script.php?
script_id=3893
• Vim template:

https://github.com/aperezdc/vim-template/
• Auto pairs:

https://github.com/ynonp/auto-pairs
Q & A
Thanks For Listening
• Ynon Perek
• http://ynonperek.com/
• ynon@ynonperek.com

More Related Content

PPTX
Style Is Cool
PPTX
SenchaCon 2016: Being Productive with the New Sencha Fiddle - Mitchell Simoens
PDF
Hello world - intro to node js
PDF
Automating security with PowerShell
PDF
Apply chat automation today - work smarter tomorrow
PDF
Why puppet? Why now?
PPTX
Continuous feature-development
PPTX
Test automation with cucumber jvm
Style Is Cool
SenchaCon 2016: Being Productive with the New Sencha Fiddle - Mitchell Simoens
Hello world - intro to node js
Automating security with PowerShell
Apply chat automation today - work smarter tomorrow
Why puppet? Why now?
Continuous feature-development
Test automation with cucumber jvm

What's hot (20)

PDF
Berlin Selenium Meetup - Galen Framework
PPT
Next generation frontend tooling
PDF
Fast Web Applications with Go
PPTX
TypeScript and Angular2 (Love at first sight)
PPTX
ASP.NET Core - Phillosophies, Processes and Tooling
PDF
Paint it blue with PowerShell
PDF
Apply chat automation today - work smarter tomorrow
KEY
Week7
PPTX
SUGUK Let me script that for you
PDF
Metaprogramming Go
PDF
Tooling for the productive front end developer
PPTX
Functional Programming in PHP
PDF
Migrate PHP E-Commerce Site to Go
PDF
Unit Testing in JavaScript
PPTX
Cross-browser unit testing JavaScript
PDF
Chat automation in a Modern IT environment
PPTX
Writing power shell the right tool for the job
PDF
Automating everything with Microsoft Flow
PDF
Can you TDD Rails?
PPTX
Saving Time By Testing With Jest
Berlin Selenium Meetup - Galen Framework
Next generation frontend tooling
Fast Web Applications with Go
TypeScript and Angular2 (Love at first sight)
ASP.NET Core - Phillosophies, Processes and Tooling
Paint it blue with PowerShell
Apply chat automation today - work smarter tomorrow
Week7
SUGUK Let me script that for you
Metaprogramming Go
Tooling for the productive front end developer
Functional Programming in PHP
Migrate PHP E-Commerce Site to Go
Unit Testing in JavaScript
Cross-browser unit testing JavaScript
Chat automation in a Modern IT environment
Writing power shell the right tool for the job
Automating everything with Microsoft Flow
Can you TDD Rails?
Saving Time By Testing With Jest
Ad

Viewers also liked (7)

PDF
Mobile Web Intro
PDF
Cryptography
PDF
Metamoose
PDF
Accessibility
PDF
09 performance
PDF
Frontend Engineer Toolbox
PDF
Html5 intro
Mobile Web Intro
Cryptography
Metamoose
Accessibility
09 performance
Frontend Engineer Toolbox
Html5 intro
Ad

Similar to Vimperl (20)

PPT
Setting up your development environment
PDF
NetWork - 15.10.2011 - Applied code generation in .NET
PDF
Magento 2 Development Best Practices
PDF
How To Use Selenium Successfully
PDF
Oreilly
PDF
Programming Languages #devcon2013
PDF
eXtreme Programming
PPT
Building a Simple Theme Framework
PPTX
Htmlcss1
PDF
Writing clean and maintainable code
PDF
Lessons learned: Choosing your documentation system
PPTX
Tips for Writing Better Code
PDF
Week3 office hours
PDF
The myth of the small script
PDF
How to write good quality code
PPTX
Markup languages and warp-speed documentation
PDF
Lois Patterson: Markup Languages and Warp-Speed Documentation
PDF
How to Use Selenium, Successfully
KEY
Why ruby and rails
PPTX
lec1 (1).pptxkeoiwjwoijeoiwjeoijwoeijewoi
Setting up your development environment
NetWork - 15.10.2011 - Applied code generation in .NET
Magento 2 Development Best Practices
How To Use Selenium Successfully
Oreilly
Programming Languages #devcon2013
eXtreme Programming
Building a Simple Theme Framework
Htmlcss1
Writing clean and maintainable code
Lessons learned: Choosing your documentation system
Tips for Writing Better Code
Week3 office hours
The myth of the small script
How to write good quality code
Markup languages and warp-speed documentation
Lois Patterson: Markup Languages and Warp-Speed Documentation
How to Use Selenium, Successfully
Why ruby and rails
lec1 (1).pptxkeoiwjwoijeoiwjeoijwoeijewoi

More from Ynon Perek (20)

PDF
Regexp
PDF
Html5 intro
PDF
Qt multi threads
PDF
Syllabus
PDF
Mobile Devices
PDF
Network
PDF
Architecture app
PDF
Unit Testing JavaScript Applications
PDF
How to write easy-to-test JavaScript
PDF
Introduction to Selenium and Ruby
PDF
Introduction To Web Application Testing
PDF
Angularjs
PDF
Js memory
PDF
Qt Design Patterns
PDF
Web Application Security
PDF
JavaScript DOM Manipulations
PDF
Mongodb Intro
PDF
Node JS
PDF
D3 js
PDF
Intro to SVGs
Regexp
Html5 intro
Qt multi threads
Syllabus
Mobile Devices
Network
Architecture app
Unit Testing JavaScript Applications
How to write easy-to-test JavaScript
Introduction to Selenium and Ruby
Introduction To Web Application Testing
Angularjs
Js memory
Qt Design Patterns
Web Application Security
JavaScript DOM Manipulations
Mongodb Intro
Node JS
D3 js
Intro to SVGs

Recently uploaded (20)

PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Machine learning based COVID-19 study performance prediction
PPT
Teaching material agriculture food technology
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
KodekX | Application Modernization Development
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
Cloud computing and distributed systems.
Encapsulation_ Review paper, used for researhc scholars
20250228 LYD VKU AI Blended-Learning.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Empathic Computing: Creating Shared Understanding
NewMind AI Weekly Chronicles - August'25 Week I
Machine learning based COVID-19 study performance prediction
Teaching material agriculture food technology
Diabetes mellitus diagnosis method based random forest with bat algorithm
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Programs and apps: productivity, graphics, security and other tools
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
KodekX | Application Modernization Development
Dropbox Q2 2025 Financial Results & Investor Presentation
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Digital-Transformation-Roadmap-for-Companies.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
sap open course for s4hana steps from ECC to s4
Cloud computing and distributed systems.

Vimperl