> Using a hash of arrays will not necessarily preserve the order...

If you don't want to worry about sorting the order of the blocks i.e.
doing it yourself then use Tie::IXhash (something like that on CPAN) to
preserve the order, you then don't have to worry about unbalanced blocks
and reassembly by applying an if defined type block. Easy.

Dan

> 
> Using a hash of arrays will not necessarily preserve the order. Below
> is the start of an array of arrays solution. I'll leave handling
> unbalanced blocks and reassembling the pieces as an exercise for the
> reader.
> 
> my @blocks = ();
> my $maxlen = 0;
> while (<DATA>) {
>     chomp;
>     if (/^#/) {
>         push @blocks, [];
>     } elsif ($_) {
>         push @{$blocks[$#blocks]}, $_;
>         my $len = $#{$blocks[$#blocks]};
>         $maxlen = $len if $len > $maxlen;
>     }
> }
> 
> __DATA__
> #block1
> aaa
> ddd
> 
> #block2
> bbb
> eee
> 
> #block3
> ccc
> fff
> 
-- 
Daniel Klose
Mathematical Biology
NIMR
The Ridgeway
Mill Hill
London
NW7 1AA


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to