<?xml version="1.0" encoding="windows-1252"?>
<node id="1022338" title="Re^2: Regex to extract certain lines only from command output/text file." created="2013-03-07 22:07:22" updated="2013-03-07 22:07:22">
<type id="11">
note</type>
<author id="1007649">
arnaud99</author>
<data>
<field name="doctext">
&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Thanks for your comments. The error is due to an empty line at the end of the __DATA__section. I must have added it when I pasted the code. &lt;/p&gt;
&lt;p&gt;Since the empty line did not match  /\d:\d:\d$/, the data for that host was considered to be worth keeping. &lt;/p&gt;
&lt;p&gt;I trust the issue is now sorted. I Simply added&lt;/p&gt;
&lt;code&gt;
next if $a_line =~ /^\s*$/; #ignore empty lines
&lt;/code&gt;
&lt;p&gt; after reading each line. &lt;/p&gt;
&lt;p&gt;Here  is the full code, with the extra line check, and the empty __DATA__ line.&lt;/p&gt;
&lt;code&gt;
use strict;
use warnings;
use 5.010;

my @tmp;
my @keep;

while (my $a_line = &lt;DATA&gt;) {
	next if $a_line =~ /^\s*$/; #ignore empty lines
	chomp $a_line;
	if ( $a_line =~ /^\d+\s+\D+/ ) 
	{
			#we have a new host master record
			#process the data from the previous host
		process_previous(\@tmp);
			#on return @tmp may be empty

		@keep = (@keep, @tmp);
		@tmp =(); #now we empty it anyway
	}
	push @tmp, $a_line;
}

process_previous(\@tmp);

@keep = (@keep, @tmp);
@tmp=();

print "$_\n" for @keep;
exit(0);

#----------------- SUBS ----------------------------
sub process_previous {
	my $array_ref = shift;
	my $keep_this_data = 0;
	foreach my $elem(@$array_ref) 
	{
		if ($elem !~ /\d:\d:\d$/ ) 
		{
			#found a line NOT terminating in 3 digit, each separated by a
			#colon, so we want to keep the whole info abou this host
			$keep_this_data = 1;
			last;
		}
	}

	if (!$keep_this_data) 
	{
		#empty the array
		@$array_ref = ();
	}
}

__DATA__
7 hostname12 Generic-legacy 10000000AB210ACF6 ---
                             10000000AB210ACF4 2:5:4
9 hostname13 Generic        10000000AB2A3006A 3:5:2
                             10000000AB2A30068 2:5:2
23 srvernam   Generic-legacy 5001438002A3004A 3:3:3
                             5001438002A3004A ---
                             5001438002A30048 2:3:3
                             5001438002A30048 2:5:2
                             5001438002A30048 2:5:2
9 hostname13 Generic        10000000AB2A3006A 3:5:2
                             10000000AB2A30068 2:5:2
21 HOSTNAME   Generic
9 hostname13 Generic        10000000AB2A3006A 3:5:2
                             10000000AB2A30068 2:5:2

&lt;/code&gt;
&lt;p&gt;Kind regards&lt;/p&gt;
Arnaud.

</field>
<field name="root_node">
1022282</field>
<field name="parent_node">
1022302</field>
</data>
</node>
