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

Re^3: passing reference to subroutine

by wfsp (Abbot)
on Oct 28, 2011 at 11:33 UTC ( #934370=note: print w/replies, xml ) Need Help??

in reply to Re^2: passing reference to subroutine
in thread passing reference to subroutine

modification of passed in array
You may have good reasons to do that but when I'm faced with similar situations I wonder if returning a new version of the array might be better/safer.
#! /usr/perl/bin use warnings; use strict; use Data::Dumper; sub process_array_ref { my $initial_array_ref = shift; my @processed_array; for my $element (@{$initial_array_ref}){ # do something with element # validate, normalise, error checking, # convert to metric, skip, whatever push @processed_array, sprintf(qq{processed: %s}, $element); } return \@processed_array; } my $initial_array_ref = ['a','b','c','d','e']; my $processed_array_ref = process_array_ref($initial_array_ref); print Dumper($processed_array_ref);
I often find that debugging/maintainance is easier with this approach. YMMV.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://934370]
[Discipulus]: choroba started in primary school to get some advantage in the future..
[choroba]: nono, I programmed in Basic at the primary school, on my Commodore 116/16
[Discipulus]: ;=)
[choroba]: then learned some assebly on the same machine, then moved to my father's PC (XT with a Hercules card), used Turbo Pascal a lot
[choroba]: I started with *nix at the University, we had some Sparcs and Linux machines
[choroba]: that was around 1994 or 95
hippo actually introduced Linux to his university.
Discipulus mmh will be a fun meditation: How I started with computers and programming..
[Discipulus]: bravo hippo! well done

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (8)
As of 2018-06-22 09:41 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (123 votes). Check out past polls.