Initial add of defaria.com
[clearscm.git] / defaria.com / blogs / Status / 2005 / 12 / binmerge-module.html
1 <!DOCTYPE html>
2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
3   <head>
4     <meta charset="utf-8">
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 &amp; 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">
12     <!--[if lt IE 9]>
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>
15     <![endif]-->
16     
17     <link rel="start" href="http://defaria.com/blogs/Status/">
18
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 &quot;bug&quot;! :-(">
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 &amp; 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 &quot;\&quot; 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">
29     <!-- Metadata -->
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">
33     
34   </head>
35   <body>
36     <div id="container">
37       <div id="container-inner">
38         <header id="header" role="banner">
39           <div id="header-inner">
40             <div id="header-content">
41               <h1>
42                 <a href="http://defaria.com/blogs/Status/">
43
44                   Status
45
46                 </a>
47               </h1>
48               
49             </div>
50
51             <nav role="navigation">
52           <ul>
53             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
54
55
56           </ul>
57         </nav>
58
59           </div>
60         </header>
61         <div id="content">
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>
66             </ul>
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>
75
76   
77                       <li class="asset-meta-list-item">in <a itemprop="articleSection" rel="tag" href="http://defaria.com/blogs/Status/broadcom/">Broadcom</a></li>
78   
79
80                    </ul>
81                 </footer>
82                 </div>
83                 <div class="entry-content asset-content" itemprop="articleBody">
84                   <ul>
85   <li>Changed bin_merge to be a module so that it easier to call from UCMCustom</li>
86
87   <li>Integrated new BinMerge.pm module into the UCMCustom</li>
88
89   <li>Added fix to use "\" in get_vob_str</li>
90
91   <li>Changed UCMCustom to use strict and warnings(we should always use these)</li>
92
93   <li>Changed UCMCustom to use use instead of require</li>
94
95   <li>Hunted down bug where UCMCustom undef's $/ (Bad UCMCustom!! Bad!)</lI>
96 </ul>
97                   <h2>BinMerge Module</h2>
98
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>
100
101 <h2>Using strict</h2>
102
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>
104
105 <blockquote>
106 <p><b>Note:</b> Some version of Perl do not have use warnings. Instead specify -w on the #! line.</p>
107 </blockquote>
108
109 <h2>Use vs Require</h2>
110
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>
112
113 <blockquote>
114   <h2>What's the difference between require and use?</h2>
115
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>
117
118   <ol>
119     <li> do $file is like eval `cat $file`, except the former</li>
120       <ol>
121         <li>searches @INC and updates %INC.</li>
122
123         <li>bequeaths an *unrelated* lexical scope on the eval'ed code.</li>
124       </ol>
125
126     <li>require $file is like do $file, except the former</li>
127       <ol>
128         <li>checks for redundant loading, skipping already loaded files.</li>
129
130         <li>raises an exception on failure to find, compile, or execute $file.</li>
131       </ol>
132
133     <li>require Module is like require "Module.pm", except the former</li>
134       <ol>
135         <li>translates each "::" into your system's directory separator.</li>
136
137         <li>primes the parser to disambiguate class Module as an indirect object.</li>
138       </ol>
139
140     <li>use Module is like require Module, except the former</li>
141       <ol>
142         <li>loads the module at compile time, not run-time.</li>
143
144         <li>imports symbols and semantics from that package to the current one.</li>
145       </ol>
146   </ol>
147 </blockquote>
148
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>
150
151 <h2>$/ Bug</h2>
152
153 <p>From Perldoc's <a href="http://perldoc.perl.org/perlvar.html">Perlvar</a>:</p>
154
155 <blockquote>
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>
157
158   <div class="code"><pre>
159   open my $fh, "foo" or die $!;
160   local $/; # enable localized slurp mode
161   my $content = <$fh>;
162   close $fh;
163   </pre></div>
164
165   <p>But the following code is quite bad:</p>
166
167   <div class="code"><pre>
168   open my $fh, "foo" or die $!;
169   undef $/; # enable slurp mode
170   my $content = <$fh>;
171   close $fh;
172   </pre></div>
173
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>
175 </blockquote>
176                 </div>
177                 <nav class="page-navigation entry-navigation pagination content-nav">
178                   <ul class="page-navigation-list">
179
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>
181
182
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 &quot;bug&quot;! :-(">Next entry</a></li>
184
185                   </ul>
186                 </nav>
187                 <!--
188 <aside id="zenback" class="zenback feedback">
189   Please paste Zenback script code here.
190 </aside>
191 -->
192                 
193                 
194               </article>
195             </div>
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">
200       <div>
201         <input type="text" name="search" value="" placeholder="Search...">
202
203         <input type="hidden" name="IncludeBlogs" value="8">
204
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">
208         </button>
209       </div>
210     </form>
211   </div>
212 </nav>
213 <nav class="widget-archive-category widget">
214   <h3 class="widget-header">Categories</h3>
215   <div class="widget-content">
216     
217       
218     <ul class="widget-list">
219       
220       
221       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
222       
223       
224       </li>
225       
226     
227       
228       
229       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (3)</a>
230       
231       
232       </li>
233       
234     
235       
236       
237       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
238       
239       
240       </li>
241       
242     
243       
244       
245       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
246       
247       
248       </li>
249       
250     
251       
252       
253       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
254       
255       
256       </li>
257       
258     
259       
260       
261       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
262       
263       
264       </li>
265       
266     
267       
268       
269       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
270       
271       
272       </li>
273       
274     
275       
276       
277       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
278       
279       
280       </li>
281       
282     
283       
284       
285       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
286       
287       
288       </li>
289       
290     
291       
292       
293       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
294       
295       
296       </li>
297       
298     
299       
300       
301       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
302       
303       
304       </li>
305       
306     
307       
308       
309       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
310       
311       
312       </li>
313       
314     </ul>
315       
316     
317   </div>
318 </nav>
319   
320
321 <nav class="widget-archive-dropdown widget">
322   <h3 class="widget-header">Archives</h3>
323   <div class="widget-content">
324     <select>
325       <option>Select a Month...</option>
326     
327       <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
328     
329   
330     
331       <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
332     
333   
334     
335       <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
336     
337   
338     
339       <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
340     
341   
342     
343       <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
344     
345   
346     
347       <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
348     
349   
350     
351       <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
352     
353   
354     
355       <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
356     
357   
358     
359       <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
360     
361   
362     
363       <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
364     
365   
366     
367       <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
368     
369   
370     
371       <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
372     
373   
374     
375       <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
376     
377   
378     
379       <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
380     
381   
382     
383       <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
384     
385   
386     
387       <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
388     
389   
390     
391       <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
392     
393   
394     
395       <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
396     
397   
398     
399       <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
400     
401   
402     
403       <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
404     
405   
406     
407       <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
408     
409   
410     
411       <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
412     
413   
414     
415       <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
416     
417   
418     
419       <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
420     
421   
422     
423       <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
424     
425   
426     
427       <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
428     
429   
430     
431       <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
432     
433   
434     
435       <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
436     
437   
438     
439       <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
440     
441   
442     
443       <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
444     
445   
446     
447       <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
448     
449   
450     
451       <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
452     
453   
454     
455       <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
456     
457   
458     
459       <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
460     
461   
462     
463       <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
464     
465   
466     
467       <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
468     
469   
470     
471       <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
472     
473   
474     
475       <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
476     
477   
478     
479       <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
480     
481   
482     
483       <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
484     
485   
486     
487       <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
488     
489   
490     
491       <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
492     
493   
494     
495       <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
496     
497   
498     
499       <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
500     
501   
502     
503       <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
504     
505   
506     
507       <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
508     
509   
510     
511       <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
512     
513   
514     
515       <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
516     
517   
518     
519       <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
520     
521   
522     
523       <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
524     
525   
526     
527       <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
528     
529   
530     
531       <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
532     
533   
534     
535       <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
536     
537   
538     
539       <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
540     
541   
542     
543       <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
544     
545   
546     
547       <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
548     
549   
550     
551       <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
552     
553   
554     
555       <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
556     
557   
558     
559       <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
560     
561   
562     
563       <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
564     
565   
566     
567       <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
568     
569   
570     
571       <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
572     
573   
574     
575       <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
576     
577   
578     
579       <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
580     
581   
582     
583       <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
584     
585   
586     
587       <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
588     
589   
590     
591       <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
592     
593   
594     
595       <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
596     
597   
598     
599       <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
600     
601   
602     
603       <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
604     
605   
606     
607       <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
608     
609   
610     
611       <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
612     
613     </select>
614   </div>
615 </nav>
616     
617   
618
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>
622
623   </div>
624 </div>
625
626             </aside>
627           </div>
628         </div>
629         <footer id="footer" role="contentinfo">
630           <div id="footer-inner">
631             <div id="footer-content">
632   <nav role="navigation">
633           <ul>
634             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
635
636
637           </ul>
638         </nav>
639
640   <p class="license">&copy; Copyright 2016.</p>
641   <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
642 </div>
643           </div>
644         </footer>
645       </div>
646     </div>
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>
649   </body>
650 </html>