GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  SORT::ARRAY (3)

.ds Aq ’

NAME

Sort::Array - This extended sorting algorithm allows you to

a) sort an array by ANY field number, not only the first. b) find duplicates in your data-set and sort them out.

The function is case-sensitive. Future versions might come without this limitation.

CONTENTS

SYNOPSIS



  use Sort::Array qw(
      Sort_Table
      Discard_Duplicates
  );
  @data = Sort_Table(
      cols      => 4,
      field     => 4,
      sorting   => descending,
      structure => csv,
      separator => \*,
      data      => \@data,
  );
  @languages = Discard_Duplicates(
      sorting      => ascending,
      empty_fields => delete,
      data         => \@languages,
  );



DESCRIPTION

Sort_Table() is capable of sorting table-form arrays by a particular value.

Discard_Duplicates() discards doubles from an array and returns the sorted array.

    Usage



  @data = Sort_Table(
      cols      => 4,
      field     => 4,
      sorting   => descending,
      structure => csv,
      separator => \*,
      data      => \@data,
  );

  @languages = Discard_Duplicates(
      sorting      => ascending,
      empty_fields => delete,
      data         => \@languages,
  );



cols


 How many columns in a line. Integer beginning at
 1 (not 0) (for better readability).
 e.g.: 4 = Four fields at one line. ($array[0..3])
 - Utilizable only in Sort_Table()
 - Must be declared



field


 Which column should be used for sorting. Integer
 beginning at 1 (not 0).
 e.g.: 4 = Sorting the fourth field. ($array[3])
 - Utilizable only in Sort_Table()
 - Must be declared



sorting


 In which order should be sorted.
 e.g.: ascending or descending
 - Utilizable in Sort_Table()
 - Must be declared

 - Utilizable in Discard_Duplicates()
 - Can be declared (if empty, it does not sort the array)



empty_fields


 Should empty fields removed
 e.g.: delete or not specified
 - Utilizable only in Discard_Duplicates()
 - Can be declared



structure


 Structure of that Array.
 e.g.: csv or single
 - Utilizable only in Sort_Table()
 - Must be declared



separator


 Which separator should be used? Only needed when
 structure => csv is set. If left empty default
 is ";".
 For ?+*{} as a separator you must mask it since
 it is a RegEx.
 e.g.: \? or \* ...
 - Utilizable only in Sort_Table()
 - Must be declared when using csv or ;
     will be used.



data


 Reference to the array that should be sorted.
 - Utilizable in Sort_Table() and Discard_Duplicates()
 - Must be declared



If everything went right, Sort_Table() returns an array containing your sorted Array. The structure from the imput-array is kept although it’s sorted. ;)

    Returncodes

If an error occurs, than will be returned an undefinied array and set $Sort::Array::error with one of the following code. Normally $Sort::Array::error is 0.

The following codes are returned, if an error occurs:
’100’ <cols> is empty or not set or contains wrong content.
’101’ <field> is emtpy or not set or contains wrong content.
’102’ <sorting> is empty or contains not ’ascending’ or ’descending’.
’103’ <structure> is empty or contains not ’csv’ or ’single’.
’104’ <data> is empty (your reference array).

EXAMPLES

Here are some short samples. These should help you getting used to Sort::Array

    Sorting CSV-Lines in an array



  my @data = (
     00003*layout-3*19990803*0.30,
     00002*layout-2*19990802*0.20,
     00004*layout-4*19990804*0.40,
     00001*layout-1*19990801*0.10,
     00005*layout-5*19990805*0.50,
     00007*layout-7*19990807*0.70,
     00006*layout-6*19990806*0.60,
  );

  @data = Sort_Table(
      cols      => 4,
      field     => 4,
      sorting   => descending,
      structure => csv,
      separator => \*,
      data      => \@data,
  );

  Returns an array (with CSV-Lines):

  00007*layout-7*19990807*0.70
  00006*layout-6*19990806*0.60
  00005*layout-5*19990805*0.50
  00004*layout-4*19990804*0.40
  00003*layout-3*19990803*0.30
  00002*layout-2*19990802*0.20
  00001*layout-1*19990801*0.10



    Sorting single-fields in an array



  my @data = (
     00003, layout-3, 19990803, 0.30,
     00002, layout-2, 19990802, 0.20,
     00004, layout-4, 19990804, 0.40,
     00001, layout-1, 19990801, 0.10,
     00005, layout-5, 19990805, 0.50,
     00007, layout-7, 19990807, 0.70,
     00006, layout-6, 19990806, 0.60,
  );

  @data = Sort_Table(
      cols      => 4,
      field     => 4,
      sorting   => descending,
      structure => single,
      data      => \@data,
  );

  Returns an array (with single fields)

  00007 layout-7 19990807 0.70
  00006 layout-6 19990806 0.60
  00005 layout-5 19990805 0.50
  00004 layout-4 19990804 0.40
  00003 layout-3 19990803 0.30
  00002 layout-2 19990802 0.20
  00001 layout-1 19990801 0.10



    Discard duplicates in an array:



  my @languages = (
      ,
      German,
      Dutch,
      English,
      Spanish,
      ,
      German,
      Spanish,
      English,
      Dutch,
  );

  @languages = Discard_Duplicates(
      sorting      => ascending,
      empty_fields => delete,
      data         => \@languages,
  );

  Returns an array (with single fields):

  Dutch
  English
  German
  Spanish



BUGS

No Bugs known for now. ;)

HISTORY

- 2001-08-25 / 0.26 File permission fixed, now anybody can extract the archive, not only the user ’root’.
- 2001-08-23 / 0.25 Changed the Discard_Duplicates() function to discard duplicates and only sort the array if wished. You can set <sorting> to ’asending’, ’desending’ or let them empty to disable sorting.

Some misspelling corrected.

- 2001-08-17 / 0.24 Error codes are no longer returned in an array (that array that contains the sorted Data). $Sort::Array::error is used with the code instead.
- 2001-07-28 / 0.23 First beta-release, non-public

AUTHOR

Michael Diekmann, <michael.diekmann@undef.de>

THANKS

Rainer Luedtke, <sirbedivere@freshfish.de>

COPYRIGHT

Copyright (c) 2001 Michael Diekmann <michael.diekmann@undef.de>. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

perl(1).

POD ERRORS

Hey! <B>The above document had some coding errors, which are explained below:B>
Around line 489: ’=item’ outside of any ’=over’
Around line 514: You forgot a ’=back’ before ’=head1’
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 ARRAY (3) 2001-08-25

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.