On 3-mrt-04, at 09:56, R. Joseph Newton wrote:


Bjorn Van Blanckenberg wrote:



#!/usr/bin/perl


use strict;
use Getopt::Long;

GetOptions(\my %opt, 'filepath=s');

my $filepath = (%opt->{'filepath'});

my @fields = ();
my @sorted = ();
my $lastbit = 1;
my @bits = ();

open(INFILE,$filepath);

chomp(@fields = <INFILE>);

@sorted =
        map { $_->[0] }
        sort { $a->[5] cmp $b->[5] }
        map { [ $_ , (split /\t/) ] } @fields;

foreach (@sorted){
        @bits = split;
        print "\n" if ($bits[4] ne $lastbit);
        print "$_\n";
        $lastbit=$bits[4];
}

this is what I have know

Do you mind explaining a little about how the code you have so far accomplishes
its task. It looks very similar to the example code posted on this thread. If
I am not mistaken, the code was posted to encourage you to understand how those
operations work


but al it does is sorting according item 5 but
want it to look in all the items of column 5 and if it contains item 5
print it in one block and then the next block separated with an return
so that

Huh?


one  title   state   name   testing   number
two  title2   state2   name2   final   number2
one  title3   state3   name3   pre   number3
four  title4   state4   name4   tesing2   number4
six  title5   state5   name5   testing3   number5
dip  title6   state6   name6   pre2   number6
fun  title7   state7   name7   final2   number7

becomes

one  title   state   name   testing   number
four  title4   state4   name4   tesing2   number4
six  title5   state5   name5   testing3   number5

two  title2   state2   name2   final   number2
fun  title7   state7   name7   final2   number7

one  title3   state3   name3   pre   number3
dip  title6   state6   name6   pre2   number6

I don't quite understand. In column 5, I see number, number4, , number5, then
back to number2. Likewise with column 2: I see state, then state2, then....Oh,
I see [banging forehead with wet rutabaga] you're using 1-based indexing. So
you are calling column 0 column 1, etc. OK. Please warn us when you do that.


It sounds like you are going to need to do this in two steps, first getting the
groupings, then sorting each grouping in turn. Unfortunately, I find it almost
impossible to understand cryptic coding style as you use above, but if you can
eplain how the code above is working for you, we can probably help you extend
that process to do the sub-sort on each grouping


Joseph


I understand how the code works

It reads the file end split every line according to the tabs and then sorts everything.
For returning the info it looks at colomn 5 (1-based indexing) and if colomn 5 of the
next line is the different print an extra newline. So it basically does what I want
if colomn 5 is exact the same not if it start with string from colomn 5.


So It is basically what I need but without reordering (sorting) and looking at every line that
starts with colomn 5 and then sorts that blok of tekst.


I hope I explaned it well enough.

Thanks


-- 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