Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^2: OO best practice basic questions

by Amblikai (Scribe)
on Aug 27, 2014 at 14:39 UTC ( [id://1098751]=note: print w/replies, xml ) Need Help??


in reply to Re: OO best practice basic questions
in thread OO best practice basic questions

Thanks very much for your reply!

Couple of questions though:

What do you mean by individual accessors? Do you mean actually have a separate method for each field like "dump_num1"?

And i'm not totally familiar with modules/packages. How do i put the package in a separate file? For example, if i have the package in "Numbers.pm" do i then need to go through the process of using Makefile.pl etc? Or do i need to modify @INC at all?

Thanks again for your help!

Replies are listed 'Best First'.
Re^3: OO best practice basic questions
by Anonymous Monk on Aug 27, 2014 at 14:55 UTC
    What do you mean by individual accessors? Do you mean actually have a separate method for each field like "dump_num1"?

    Yes, although I wouldn't name it that :-) Here's an example of a common, simple implementation:

    sub num1 { my $self = shift; $self->{num1} = shift if @_; return $self->{num1}; }

    That'll let you get the current value with $oo->num1 and set a value with $oo->num1(123);

    And i'm not totally familiar with modules/packages.

    Your file Numbers.pm would start with package Numbers; use warnings; use strict; and end with 1; (the file needs to return a true value), and then the normal way to include it would be via use Numbers; - that's it. @INC includes the current working directory ., so initially you wouldn't need to change @INC at all if all your files are in the same directory. Later on, once you get into actually building a real library, you can deal with @INC - see for example lib or the -I switch.

      Thanks! I've put my package/class in a separate file now. That's more than enough for now really.

Re^3: OO best practice basic questions
by trippledubs (Deacon) on Aug 27, 2014 at 15:00 UTC
    If you 'use <module>' in your code, perl will search in the @INC array of directories (observed with perl -V) for that <module>.pm and import it. Also, the command perldoc -q 'How do I add a directory ' should give more ways to add directories at runtime. For procedural based modules, not object oriented, there is more information worth reading in the documentation for Exporter. 'perldoc Exporter'.

    You do not need to do the Makefile to make everything work on your machine, but if you want to start sharing it, like on CPAN, you would want to use one of the mod builder tools like module-starter and write a bunch of tests to make the module complete, documented, and robust like.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1098751]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2024-04-24 19:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found