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 ;
In reply to Sorting with multiple keys by Mandrake
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |