http://qs321.pair.com?node_id=684194


in reply to Data Structures

This is indeed a prime example of where one can put Object Oriented Programming to good use (leocharre++).

Of course OOP is not for the faint hearted and has a lot of do's and don'ts.

CPAN to the rescue!

There are tons of modules dealing with Object Oriented Programming, but why not reach for the most advanced? Try Moose! At first it will seem like total overkill for your application, but you don't have to use all of its features (yet). It is wel laid out, has good documentation and simply works and allows you to extend it with its more advanced features as and when you need it.

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

Replies are listed 'Best First'.
Re^2: Data Structures
by BrowserUk (Patriarch) on May 02, 2008 at 19:20 UTC
      Where are you going to store your 1000 objects?
      In an object?

      And how are you going to access the individual instances you need?
      Isn't that what accessors are made for?

      Of course in Perl, objects are just eye-candy around a data-structure (hashes, arrays, or any combination) but if I follow your reasoning, I should program in Assembler as in the end it all is machine-code.

      CountZero

      A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

        Care to share some code to demonstrate? Home brew hash or Moose-based doesn't matter.

        Say, 1000 lines and with an average of say 10 stations per line.

        This will generate some test data sufficient for the exercise:

        #! perl -slw use strict; =comment lineName stn. east...north...elev. 000301038 1260 52205121N109153806W 618485158009020 6626 000301038 1261 52205121N109153674W 618510158009027 6623 =cut for my $line ( 1 .. 1000 ) { for my $stn ( 1 .. 10 ) { printf "%08d %8d %08dN%08dW %015s %4d\n", $line, $stn, int( 1e6 * rand( 90 ) ), int( 1e6 * rand( 90 ) ), int( 1e13 * rand( 90 ) ), int( rand 9999 ); } }

        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.