sort w/o using an array

Ask a Question related to PERL Beginners, Design and Development.

  1. #1

    Default sort w/o using an array

    I am trying to figure out if there is a way to do a sort that doesn't involve putting an entire file in memory. This kind of thing is available in apps like syncsort, where you give it arguments and it uses disk space/virtual memory to do the work.
    All the examples I am finding are slurping it into an array or even a hash. I have a 10 field comma delimited csv file that I need to sort first by one field and run it through one of my scripts. Then sort it by a different field and run it through another of my scripts. My thought was to write a script to read in the csv file and rearrange the fields so that the field to be sorted is first. Then use a unix sort. Then run another script to put the order by correctly.
    A file mockup:
    "field oneA",002,"field threeGG","field fourTT", etc...
    "field oneD",004,"field threeAA","field fourZZ",etc..
    Say sort field three first, then sort field four second.

    TIA,
    John

    John Fisher Guest

  2. Similar Questions and Discussions

    1. Sort Array in datagrid
      How do you sort an array in your datagrid? I always want to be able to sort my array by an instance number. If you add a new instance I want it to...
    2. Sort Array
      Hi Can anyone give me a pointer on sorting this array below #curr.getRateCurrencyCode()# (lowest to highest values) <cfloop from ='1' to...
    3. sort array by key
      Hi, What I want is simple, but I can't figure it out at the moment. Let's say this is an array names $matches: Array ( => Array (
    4. Sort a 2D array
      Hello, I have a 2D array which I would like to sort. I take a simple example: $tab = 'toto';$tab = 'toto'; $tab = 'aaaa';$tab = 'titi'; $tab...
    5. Help me sort a two - d array
      I need help sorting a multidimensional array. I have an array myarray(column_no, row_no) it has 5 columns for this example I have used 4 rows...
  3. #2

    Default Re: sort w/o using an array

    John Fisher wrote:
    >
    > I am trying to figure out if there is a way to do a sort that
    > doesn't involve putting an entire file in memory. This kind of
    > thing is available in apps like syncsort, where you give it
    > arguments and it uses disk space/virtual memory to do the work.
    Do a search for "tape sort" and/or "external sort" and/or "merge sort".
    Also have a look at Volume 3 of "The Art of Computer Programming" by
    Donald E. Knuth.

    > All the examples I am finding are slurping it into an array or
    > even a hash. I have a 10 field comma delimited csv file that I
    > need to sort first by one field and run it through one of my
    > scripts. Then sort it by a different field and run it through
    > another of my scripts. My thought was to write a script to read
    > in the csv file and rearrange the fields so that the field to
    > be sorted is first. Then use a unix sort. Then run another
    > script to put the order by correctly.
    > A file mockup:
    > "field oneA",002,"field threeGG","field fourTT", etc...
    > "field oneD",004,"field threeAA","field fourZZ",etc..
    > Say sort field three first, then sort field four second.
    It sounds like you need to use a real database and create indexes for
    the fields in question.


    John
    --
    use Perl;
    program
    fulfillment
    John W. Krahn Guest

  4. #3

    Default Re: sort w/o using an array

    John W. Krahn wrote:
    >
    > John Fisher wrote:
    > >
    > > I am trying to figure out if there is a way to do a sort that
    > > doesn't involve putting an entire file in memory. This kind of
    > > thing is available in apps like syncsort, where you give it
    > > arguments and it uses disk space/virtual memory to do the work.
    >
    > Do a search for "tape sort" and/or "external sort" and/or "merge sort".
    > Also have a look at Volume 3 of "The Art of Computer Programming" by
    > Donald E. Knuth.
    >
    >
    > > All the examples I am finding are slurping it into an array or
    > > even a hash. I have a 10 field comma delimited csv file that I
    > > need to sort first by one field and run it through one of my
    > > scripts. Then sort it by a different field and run it through
    > > another of my scripts. My thought was to write a script to read
    > > in the csv file and rearrange the fields so that the field to
    > > be sorted is first. Then use a unix sort. Then run another
    > > script to put the order by correctly.
    > > A file mockup:
    > > "field oneA",002,"field threeGG","field fourTT", etc...
    > > "field oneD",004,"field threeAA","field fourZZ",etc..
    > > Say sort field three first, then sort field four second.
    >
    > It sounds like you need to use a real database and create indexes for
    > the fields in question.
    You may want to consider using the DBD::CSV database driver so that
    you can use SQL to access the data directly from the CSV file. You
    should then be able to combine your two scripts into one, acting on
    the output from two different select statements.

    HTH,

    Rob


    Rob Dixon Guest

Posting Permissions

  • You may not post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139