Mandrake has asked for the wisdom of the Perl Monks concerning the following question:
My problem is to sort this file and write to another (first based on the key "type" and then on the key "author") so that the output file looks like :name=Document1.doc type=Word author=aAuthor name=Document1.doc type=Excel author=bAuthor name=Document1.doc type=Text author=cAuthor name=Document1.doc type=Excel author=dAuthor name=Document1.doc type=Word author=eAuthor
What I have tried is to write a function which accepts one key name and sort the file based on that key. Again the function will be invoked with the second key. But when I invoked the function with second key, the output happened to be sorted in second key alone(the first level sorting has gone which is obvious). Is there any way with which I can do this in one stretch.?name=Document1.doc type=Excel author=bAuthor name=Document1.doc type=Excel author=dAuthor name=Document1.doc type=Text author=cAuthor name=Document1.doc type=Word author=aAuthor name=Document1.doc type=Word author=eAuthor
Many thanks for your time..#$field is the position of the element (sort key) in the #line open INPUT , $input || die $input.$! ; while (<INPUT>) { @fields = split(" ",$_) ; push @{$hash{$fields[$field]}}, $_ ; $hash_keys{$fields[$field]} = $fields[$field] unless exists $h +ash_keys{$fields[1]} ; } for $element (sort keys %hash_keys) { open OUTPUT, ">>$output" || $output.$! ; print OUTPUT @{$hash{$element}} ; close OUTPUT ; } close INPUT ;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Sorting with multiple keys
by salva (Canon) on Feb 03, 2006 at 08:21 UTC | |
|
Re: Sorting with multiple keys
by GrandFather (Saint) on Feb 03, 2006 at 07:23 UTC | |
|
Re: Sorting with multiple keys
by BrowserUk (Patriarch) on Feb 03, 2006 at 07:34 UTC | |
|
Re: Sorting with multiple keys
by Mandrake (Chaplain) on Feb 06, 2006 at 05:05 UTC |