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>