Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: The correct way to return arrays from a module

by Prior Nacre V (Hermit)
on Aug 07, 2004 at 15:26 UTC ( [id://380920]=note: print w/replies, xml ) Need Help??


in reply to The correct way to return arrays from a module

There are problems with your calling method. While testing/debugging, I suggest you make 2 calls:

my $ro_itiv_hw = new Itiv::Hw; # do any testing on $ro_itiv_hw my ($ra_cols, $ra_hw) = $ro_itiv_hw->all_hw($dbh, $filter); # now test return values

Note that the instantiation could also have been written:

my $ro_itiv_hw = Itiv::Hw->new;

Also note that the all_hw() method returns two arrayrefs NOT two arrays.

When you're finished testing, you can chain the two commands again BUT you should use this syntax:

my ($ra_cols, $ra_hw) = Itiv::Hw->new->all_hw($dbh, $filter);

Also note how I prefix the references with 'ro_' for reference to object and 'ra_' for reference to array. Not shown here but I also use rs, rh, rc, rg for references to scalars, hashes, code and globs respectively. You will save yourself a lot of time debugging if you differentiate between references and ordinary scalar variables (e.g. strings, numbers). This scheme is what I use: use it, use someone else's or make up your own. I strongly recommend you use some method along these lines.

Regards,

PN5

Replies are listed 'Best First'.
Re^2: The correct way to return arrays from a module
by qq (Hermit) on Aug 07, 2004 at 22:18 UTC

    What do you do when you have a reference to complex data structure, like a hash of arrays of objects...?

    qq

      If you mean in terms of prefix usage, the answer is nothing more than already described. I did consider extending this prefix set quite a few years ago but decided it was not useful. In cases where I think confusion is possible, I simply use the remainder of the name to disambiguate. As a last resort, in cases of extreme comlexity, I use comments to describe the complete structure.

      The main point is that the following should be known to be correct syntax:

      $rh_abc->{def} $ra_ghi->[jkl] $rc_mno->('pqr')

      from inspection of the variable name. Without the prefixes, inspection of the code where the data originated (often in a separate module) is required.

      Regards,

      PN5

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2024-04-18 21:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found