[ABE.pm] Is this safe coding practice?

Ricardo SIGNES rjbs-perl-abe at lists.manxome.org
Fri Jun 1 16:48:37 PDT 2007


* Faber Fedor <faber at linuxnj.com> [2007-06-01T18:37:01]
> >I've got a func that returns the min and max values in an array:
> >
> >Nitpick:  subroutines never return arrays.  They return scalars or lists.  A
> >list is an immutable sequence of data, an array is a container that holds a
> >mutable sequence.
> 
> (@MinY, @MaxY) = getMinMax(@foo)
> 
> because Perl can't tell where to split the arrays I'm returning, right?

Right.

> >it correctly, and someday you will not make a mistake that you might have
> >otherwise made.
> 
> I don't need that lecture, you whippersnapper! :-) it's one of my guiding
> principles and something I impress on my students.

Sorry, gramps!

> Then I don't grok the technique here.  If I modified my original code to use
> an array ref, the code would look like this:
> 
> sub getMinMax {
>    my ($data) = @_ ;
>    my $stat = Statistics::Descriptive::Full->new();
>    $stat->add_data(@$data);
>    return ($stat->min(), $stat->max());
> }
> 
> I don't see how to get/use a second parameter in the arrayref.

Not in the arrayref, but after it:

  sub getMinMax {
     my ($data, $arg) = @_ ;
     my $stat = Statistics::Descriptive::Full->new;

     $stat->pre_sorted(1) if $arg->{pre_sorted};

     $stat->add_data(@$data);
     return ($stat->min, $stat->max);
  }

-- 
rjbs


More information about the ABE-pm mailing list