<?xml version="1.0" encoding="windows-1252"?>
<node id="991003" title="Re: Use of uninitialized value $site in concatenation (.) when excute the perl script (an aside - code review)" created="2012-08-31 09:07:33" updated="2012-08-31 09:07:33">
<type id="11">
note</type>
<author id="272364">
MidLifeXis</author>
<data>
<field name="doctext">
&lt;p&gt;Take this or leave it, but there are some practices in your code that have a faint whiff of cargo culting or things that may cause problems later on.  I understand that this code may just be an example.&lt;/p&gt;

&lt;readmore&gt; 
&lt;code&gt;
#!/usr/bin/perl -w
# MLX - Note that the above line also turns on warnings
# MLX - in any other modules that you use or require.
# MLX - The 'use warnings' pragma below may be more of
# MLX - what you intended

use strict;
use warnings;

my ($time, $site, $logName, $fullName, $date, $gmt, $req, $file, $proto, $status, $length);
#
# MLX - You may want to move as much of this declaration
# MLX - into the foreach loop, unless you really need the
# MLX - data from the last pass through the loop afterwards.

# $site;
#
# MLX - Not sure what you want to do with this one.  It
# MLX - is a no-op.

my $LOGFILE = "config.txt";

# open LOGFILE,"$LOGFILE" or die "cannot open file : $!";
#
# MLX - Excellent use of 'open or die "foo: $!"'!
#
# MLX - If $LOGFILE is assigned from something you don't
# MLX - have complete control over, it can be used in
# MLX - the 2-argument version of open to overwrite
# MLX - another file.  Better would be:

open LOGFILE,'&lt;', $LOGFILE or die "cannot open file : $!";

# MLX - Another 'improvement' might be to use lexical
# MLX - file handles: 'open my $log_fh, ... '

foreach my $line (&lt;LOGFILE&gt;) {
    
    ($site, $logName, $fullName, $date, $gmt,
         $req, $file, $proto, $status, $length) = split(' ',$line);
    # MLX - Add a 'my' to the beginning of this unless
    # MLX - you need to have the data from the last pass
    # MLX - after the loop has terminated.

   my $a = "$site\n";
   print "--$a\n";
   my $b = "$logName\n";
   print "==$b\n";
 }
close(LOGFILE);
&lt;/code&gt;
&lt;/readmore&gt;

&lt;div class="pmsig"&gt;&lt;div class="pmsig-272364"&gt;
&lt;p&gt;--MidLifeXis&lt;/p&gt;

&lt;/div&gt;&lt;/div&gt;</field>
<field name="root_node">
990940</field>
<field name="parent_node">
990940</field>
</data>
</node>
