Here's my stab at it:
use strict;
use warnings;
use Data::Dumper;
my $sample1 = ['str1 str2 1',
'str3 str4 2',
'str5 str6 3',
'str7 str8 4',
'str9 str10 5'];
my $sample2 = ['str1 str2 0',
'str3 str4 4'];
my $sample3 = ['str1 str2 3',
'str3 str4 4'];
get_column($sample1);
sub get_column
{
my $ar = shift;
my $all;
foreach my $str ( @{$ar} )
{
my @ar = (split " ",$str);
push @{$all}, [ @ar ];
}
my @clean;
my $diff;
foreach my $i ( 1..$#{$all} )
{
$diff = abs($all->[$i][2]- $all->[$i-1][2] );
print "$i\t$diff\n";
if ( $diff == 1 )
{
push @clean, $all->[$i-1][0];
}
if ( $diff > 1 )
{
push @clean, $all->[$i-1][0], $all->[$i-1][1], $all->[$i][
+0], $all->[$i][1];
}
if( $diff == 1 && $i == $#{$all} ){
push @clean, $all->[$i][0], $all->[$i][1];
}
}
print Dumper \@clean;
return ;
}
JamesNC