2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
5 <meta name="description" content=" Changed bin_merge to be a module so that it easier to call from UCMCustom Integrated new BinMerge.pm module into the UCMCustom Added fix to use "\" in get_vob_str Changed UCMCustom to use strict and warnings(we should always use these)...">
6 <meta name="generator" content="Movable Type 5.2.3">
7 <title>BinMerge Module & Perl Issues - 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/2005/12/binmerge-module.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/2005/12/stripmime.html" title="Stripmime/Cleardiffmrg/CharacterSetValidation">
20 <link rel="next" href="http://defaria.com/blogs/Status/2005/12/bin-merge-updat.html" title="Bin Merge updates/GNATS: Another word for "bug"! :-(">
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="BinMerge Module & Perl Issues">
25 <meta property="og:url" content="http://defaria.com/blogs/Status/2005/12/binmerge-module.html">
26 <meta property="og:description" content=" Changed bin_merge to be a module so that it easier to call from UCMCustom Integrated new BinMerge.pm module into the UCMCustom Added fix to use "\" in get_vob_str Changed UCMCustom to use strict and warnings(we should always use these)...">
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=" Changed bin_merge to be a module so that it easier to call from UCMCustom Integrated new BinMerge.pm module into the UCMCustom Added fix to use "\" in get_vob_str Changed UCMCustom to use strict and warnings(we should always use these)...">
31 <link itemprop="url" href="http://defaria.com/blogs/Status/2005/12/binmerge-module.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">BinMerge Module & Perl Issues</li>
67 <div id="individual-main" class="main" role="main">
68 <article id="entry-1755" class="entry entry-asset asset hentry">
69 <div class="asset-header">
70 <h2 itemprop="name" class="asset-name entry-title">BinMerge Module & Perl Issues</h2>
71 <footer class="asset-meta">
72 <ul class="asset-meta-list">
73 <li class="asset-meta-list-item">Posted on <time datetime="2005-12-07T17:44:50-08:00" itemprop="datePublished">December 7, 2005</time></li>
74 <li class="asset-meta-list-item">by <span class="author entry-author vcard"></span></li>
77 <li class="asset-meta-list-item">in <a itemprop="articleSection" rel="tag" href="http://defaria.com/blogs/Status/broadcom/">Broadcom</a></li>
83 <div class="entry-content asset-content" itemprop="articleBody">
85 <li>Changed bin_merge to be a module so that it easier to call from UCMCustom</li>
87 <li>Integrated new BinMerge.pm module into the UCMCustom</li>
89 <li>Added fix to use "\" in get_vob_str</li>
91 <li>Changed UCMCustom to use strict and warnings(we should always use these)</li>
93 <li>Changed UCMCustom to use use instead of require</li>
95 <li>Hunted down bug where UCMCustom undef's $/ (Bad UCMCustom!! Bad!)</lI>
97 <h2>BinMerge Module</h2>
99 <p>I decided to change bin_merge into a module (BinMerge) and use it in UCMCustom. I was having problems trying to start the bin_merge process and getting it going in a pipe so the output from verbose could give the user feed back. For some reason bin_merge has to exit before any output was returned. Might have been because of the $/ thing described below (Bad UCMCustom, bad!)</p>
101 <h2>Using strict</h2>
103 <p>I've been taught that both use strict and use warnings should always be used when coding Perl. These diagnoistic routines are helpful in catching some common Perl mistakes that are otherwise much more difficult to debug. In fact, in implementing this I found a few potential bugs that I also corrected.</p>
106 <p><b>Note:</b> Some version of Perl do not have use warnings. Instead specify -w on the #! line.</p>
109 <h2>Use vs Require</h2>
111 <p>Require is old hat. Use is the new require! From Perldoc's <a href="http://perldoc.perl.org/perlfaq8.html#What%27s-the-difference-between-require-and-use%3F">What's the difference between require and use?</a>:</p>
114 <h2>What's the difference between require and use?</h2>
116 <p>Perl offers several different ways to include code from one file into another. Here are the deltas between the various inclusion constructs:</p>
119 <li> do $file is like eval `cat $file`, except the former</li>
121 <li>searches @INC and updates %INC.</li>
123 <li>bequeaths an *unrelated* lexical scope on the eval'ed code.</li>
126 <li>require $file is like do $file, except the former</li>
128 <li>checks for redundant loading, skipping already loaded files.</li>
130 <li>raises an exception on failure to find, compile, or execute $file.</li>
133 <li>require Module is like require "Module.pm", except the former</li>
135 <li>translates each "::" into your system's directory separator.</li>
137 <li>primes the parser to disambiguate class Module as an indirect object.</li>
140 <li>use Module is like require Module, except the former</li>
142 <li>loads the module at compile time, not run-time.</li>
144 <li>imports symbols and semantics from that package to the current one.</li>
149 <p>Note that becuase use loads the module at compile time one need to arrange for the @INC array to have any paths needed for use to succeed (IOW user written modules). In order to accomplish this one need to seed the @INC arrray in a BEGIN block as BEGIN blocks are executed before use is expanded,</p>
153 <p>From Perldoc's <a href="http://perldoc.perl.org/perlvar.html">Perlvar</a>:</p>
156 <p>You should be very careful when modifying the default values of most special variables described in this document. In most cases you want to localize these variables before changing them, since if you don't, the change may affect other modules which rely on the default values of the special variables that you have changed. This is one of the correct ways to read the whole file at once:</p>
158 <div class="code"><pre>
159 open my $fh, "foo" or die $!;
160 local $/; # enable localized slurp mode
165 <p>But the following code is quite bad:</p>
167 <div class="code"><pre>
168 open my $fh, "foo" or die $!;
169 undef $/; # enable slurp mode
174 <p>since some other module, may want to read data from some file in the default "line mode", so if the code we have just presented has been executed, the global value of $/ is now changed for any other code running inside the same Perl interpreter.</p>
177 <nav class="page-navigation entry-navigation pagination content-nav">
178 <ul class="page-navigation-list">
180 <li class="page-navigation-list-item page-navigation-prev"><a rel="prev" href="http://defaria.com/blogs/Status/2005/12/stripmime.html" title="Stripmime/Cleardiffmrg/CharacterSetValidation">Previous entry</a></li>
183 <li class="page-navigation-list-item page-navigation-next"><a rel="next" href="http://defaria.com/blogs/Status/2005/12/bin-merge-updat.html" title="Bin Merge updates/GNATS: Another word for "bug"! :-(">Next entry</a></li>
188 <aside id="zenback" class="zenback feedback">
189 Please paste Zenback script code here.
196 <aside class="widgets related" role="complementary">
197 <nav class="widget-search widget">
198 <div class="widget-content">
199 <form method="get" id="search" action="http://defaria.com/mt/mt-search.cgi">
201 <input type="text" name="search" value="" placeholder="Search...">
203 <input type="hidden" name="IncludeBlogs" value="8">
205 <input type="hidden" name="limit" value="20">
206 <button type="submit" name="button">
207 <img alt="Search" src="/mt/mt-static/support/theme_static/rainier/img/search-icon.png">
213 <nav class="widget-archive-category widget">
214 <h3 class="widget-header">Categories</h3>
215 <div class="widget-content">
218 <ul class="widget-list">
221 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
229 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (3)</a>
237 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
245 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
253 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
261 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
269 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
277 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
285 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
293 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
301 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
309 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
321 <nav class="widget-archive-dropdown widget">
322 <h3 class="widget-header">Archives</h3>
323 <div class="widget-content">
325 <option>Select a Month...</option>
327 <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
331 <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
335 <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
339 <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
343 <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
347 <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
351 <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
355 <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
359 <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
363 <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
367 <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
371 <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
375 <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
379 <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
383 <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
387 <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
391 <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
395 <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
399 <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
403 <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
407 <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
411 <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
415 <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
419 <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
423 <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
427 <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
431 <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
435 <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
439 <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
443 <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
447 <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
451 <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
455 <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
459 <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
463 <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
467 <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
471 <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
475 <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
479 <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
483 <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
487 <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
491 <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
495 <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
499 <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
503 <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
507 <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
511 <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
515 <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
519 <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
523 <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
527 <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
531 <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
535 <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
539 <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
543 <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
547 <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
551 <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
555 <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
559 <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
563 <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
567 <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
571 <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
575 <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
579 <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
583 <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
587 <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
591 <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
595 <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
599 <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
603 <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
607 <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
611 <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
619 <div class="widget-syndication widget section">
620 <div class="widget-content">
621 <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>
629 <footer id="footer" role="contentinfo">
630 <div id="footer-inner">
631 <div id="footer-content">
632 <nav role="navigation">
634 <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
640 <p class="license">© Copyright 2016.</p>
641 <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
647 <script src="http://defaria.com/mt/mt-static/jquery/jquery.min.js"></script>
648 <script src="http://defaria.com/blogs/Status/mt-theme-scale2.js"></script>