2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
5 <meta name="description" content="Programming complex systems is... well... complicated. You need to focus on the task at hand and be able to see the trees from the forest as they say. That's why I like to eliminate as much what I call syntactic...">
6 <meta name="generator" content="Movable Type 5.2.3">
7 <title>Eliminating Perl Syntactic Sugar - Status</title>
8 <link rel="alternate" type="application/atom+xml" title="Recent Entries" href="http://defaria.com/blogs/Status/atom.xml">
9 <link rel="canonical" href="http://defaria.com/blogs/Status/2012/08/eliminating-per.html">
10 <meta name="viewport" content="width=device-width,initial-scale=1">
11 <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles.css">
13 <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles_ie.css">
14 <script src="/mt/mt-static/support/theme_static/rainier/js/html5shiv.js"></script>
17 <link rel="start" href="http://defaria.com/blogs/Status/">
19 <link rel="prev" href="http://defaria.com/blogs/Status/2012/05/20120511adefari.html" title="2012-05-11-adefaria">
20 <link rel="next" href="http://defaria.com/blogs/Status/2012/08/creating-develo.html" title="Creating Development Schema Repositories">
21 <!-- Open Graph Protocol -->
22 <meta property="og:type" content="article">
23 <meta property="og:locale" content="en-us">
24 <meta property="og:title" content="Eliminating Perl Syntactic Sugar">
25 <meta property="og:url" content="http://defaria.com/blogs/Status/2012/08/eliminating-per.html">
26 <meta property="og:description" content="Programming complex systems is... well... complicated. You need to focus on the task at hand and be able to see the trees from the forest as they say. That's why I like to eliminate as much what I call syntactic...">
27 <meta property="og:site_name" content="Status">
28 <meta property="og:image" content="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
30 <meta itemprop="description" content="Programming complex systems is... well... complicated. You need to focus on the task at hand and be able to see the trees from the forest as they say. That's why I like to eliminate as much what I call syntactic...">
31 <link itemprop="url" href="http://defaria.com/blogs/Status/2012/08/eliminating-per.html">
32 <link itemprop="image" href="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
37 <div id="container-inner">
38 <header id="header" role="banner">
39 <div id="header-inner">
40 <div id="header-content">
42 <a href="http://defaria.com/blogs/Status/">
51 <nav role="navigation">
53 <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
62 <div id="content-inner">
63 <ul class="breadcrumb breadcrumb-list">
64 <li class="breadcrumb-list-item"><a href="http://defaria.com/blogs/Status/">Home</a></li>
65 <li class="breadcrumb-list-item">Eliminating Perl Syntactic Sugar</li>
67 <div id="individual-main" class="main" role="main">
68 <article id="entry-1974" class="entry entry-asset asset hentry">
69 <div class="asset-header">
70 <h2 itemprop="name" class="asset-name entry-title">Eliminating Perl Syntactic Sugar</h2>
71 <footer class="asset-meta">
72 <ul class="asset-meta-list">
73 <li class="asset-meta-list-item">Posted on <time datetime="2012-08-02T20:13:44-08:00" itemprop="datePublished">August 2, 2012</time></li>
74 <li class="asset-meta-list-item">by <span class="author entry-author vcard"></span></li>
81 <div class="entry-content asset-content" itemprop="articleBody">
82 <p>Programming complex systems is... well... complicated. You need to focus on the task at hand and be able to see the trees from the forest as they say. That's why I like to eliminate as much what I call syntactic sugar from the language. Syntactic sugar are ornaments, special characters and restating the obvious or default that makes your mind drift from the problem at hand to how to formulate syntactic sugar. Additionally such sugar takes time to type in, is prone to errors if you don't get it right and usually are comprised of characters that, as a touch typist, you have to often stretch to reach on the keyboard.</p>
84 <p>Here's an example. Recently I came across the following code:</p>
87 delete($self->{'cqc'}->{'fields'}->{'PCP_ID'}) if (exists $self->{'cqc'}->{'fields'}->{'PCP_ID'}); # PCP_ID is read-only and should not be passed through.<br>
88 delete($self->{'cqc'}->{'fields'}->{'Approved_by_CCB'}) if (exists $self->{'cqc'}->{'fields'}->{'Approved_by_CCB'});<br>
89 delete($self->{'cqc'}->{'fields'}->{'record_type'}) if (exists $self->{'cqc'}->{'fields'}->{'record_type'});<br>
92 <p>Now that takes a some time to parse... (Did you see the comment buried in there?) And here's the same code with the syntactic sugar removed:</p>
95 delete $self->{cqc}{fields}{PCP_ID};<br>
96 delete $self->{cqc}{fields}{Approved_by_CCB};<br>
97 delete $self->{cqc}{fields}{record_type};<br>
100 <p>which do you find easier to read?</p>
105 <li> Surrounding hash keys with '' is unnecessary unless you use special characters in the key name like spaces and '-'. The '_' character is OK (the Perl interpreter views '-' as a possible subtraction). Use '' for hash keys only when necessary.</li>
107 <li>The additional '->' operators are unnecessary. The first one is necessary since $self is a hashref, but after that you don't need them - why type them?</li>
109 <li>The delete call need not have (). Granted, delete is a function and some people field all function should have () even if there are no parameters. And yet even people who feel this way rarely use () on Perl builtins like print and die. If you define your subroutines before they are used you can call them without ().</li>
111 <li>There's no reason to include "if (exists $self->{'cqc'}->{'fields'}->{'PCP_ID'})". First off, if clauses that follow the statement do not need (). Even "exists" is unnecessary as if it is omitted the if statement works the same anyway. Finally, delete $hashref->{unknown} will not error out if $hashref->{unknown} doesn't exist.</li>
115 <nav class="page-navigation entry-navigation pagination content-nav">
116 <ul class="page-navigation-list">
118 <li class="page-navigation-list-item page-navigation-prev"><a rel="prev" href="http://defaria.com/blogs/Status/2012/05/20120511adefari.html" title="2012-05-11-adefaria">Previous entry</a></li>
121 <li class="page-navigation-list-item page-navigation-next"><a rel="next" href="http://defaria.com/blogs/Status/2012/08/creating-develo.html" title="Creating Development Schema Repositories">Next entry</a></li>
126 <aside id="zenback" class="zenback feedback">
127 Please paste Zenback script code here.
134 <aside class="widgets related" role="complementary">
135 <nav class="widget-search widget">
136 <div class="widget-content">
137 <form method="get" id="search" action="http://defaria.com/mt/mt-search.cgi">
139 <input type="text" name="search" value="" placeholder="Search...">
141 <input type="hidden" name="IncludeBlogs" value="8">
143 <input type="hidden" name="limit" value="20">
144 <button type="submit" name="button">
145 <img alt="Search" src="/mt/mt-static/support/theme_static/rainier/img/search-icon.png">
151 <nav class="widget-archive-category widget">
152 <h3 class="widget-header">Categories</h3>
153 <div class="widget-content">
156 <ul class="widget-list">
159 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
167 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (3)</a>
175 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
183 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
191 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
199 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
207 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
215 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
223 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
231 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
239 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
247 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
259 <nav class="widget-archive-dropdown widget">
260 <h3 class="widget-header">Archives</h3>
261 <div class="widget-content">
263 <option>Select a Month...</option>
265 <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
269 <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
273 <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
277 <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
281 <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
285 <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
289 <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
293 <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
297 <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
301 <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
305 <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
309 <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
313 <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
317 <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
321 <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
325 <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
329 <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
333 <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
337 <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
341 <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
345 <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
349 <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
353 <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
357 <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
361 <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
365 <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
369 <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
373 <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
377 <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
381 <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
385 <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
389 <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
393 <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
397 <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
401 <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
405 <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
409 <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
413 <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
417 <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
421 <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
425 <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
429 <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
433 <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
437 <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
441 <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
445 <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
449 <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
453 <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
457 <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
461 <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
465 <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
469 <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
473 <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
477 <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
481 <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
485 <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
489 <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
493 <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
497 <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
501 <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
505 <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
509 <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
513 <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
517 <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
521 <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
525 <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
529 <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
533 <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
537 <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
541 <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
545 <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
549 <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
557 <div class="widget-syndication widget section">
558 <div class="widget-content">
559 <p><img src="http://defaria.com/mt/mt-static/images/status_icons/feed.gif" alt="Subscribe to feed" width="9" height="9" /> <a href="http://defaria.com/blogs/Status/atom.xml">Subscribe to this blog's feed</a></p>
567 <footer id="footer" role="contentinfo">
568 <div id="footer-inner">
569 <div id="footer-content">
570 <nav role="navigation">
572 <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
578 <p class="license">© Copyright 2016.</p>
579 <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
585 <script src="http://defaria.com/mt/mt-static/jquery/jquery.min.js"></script>
586 <script src="http://defaria.com/blogs/Status/mt-theme-scale2.js"></script>