Sten Berg <[EMAIL PROTECTED]> wrote:
: It looks like this (just trying to be helpful ;-):
Sorry, didn't mean to be so grumpy.
I wrote one solution and then re-read the post and
had to re-write because I hadn't caught the extra lines.
In this solution I first change the file into an
appropriate data structure and then use that structure
as a basis for the report. I use Text::Wrap to limit
the report width.
use Text::Wrap 'wrap';
# fetch included values in a AoA
my @included = [];
{
my $last_value = -1;
while ( <DATA> ) {
next unless /^- value : (\d+)/;
# new outer element
push @included, [] if $last_value >= $1;
$last_value = $1;
# push value on inner array
push @{ $included[ -1 ] }, $1;
}
}
# report
$Text::Wrap::columns = 72;
my $loop_number = 1;
foreach my $loop ( @included ) {
printf
"Loop %s:\n\tIncluded:\n%s\n\tMissing:\n%s\n\n",
$loop_number++,
wrap( "\t", "\t", join ' ', @$loop ),
wrap( "\t", "\t", join ' ', @{ missing( $loop, [0 .. 255] ) } );
}
sub missing {
my( $values, $compare ) = @_;
my %missing;
@missing{ @$compare } = ();
delete @missing{ @$values };
return [ sort { $a <=> $b } keys %missing ];
}
HTH,
Charles K. Clarkson
--
Mobile Homes Specialist
254 968-8328
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>