linux poison RSS
linux poison Email

Perl Script: Passing Array by Reference to Function

If the array being passed to a function is large, it might take some time (and considerable space) to create a copy of the array when the function is called by passing the array and may have some impact on the performance of your application.

To overcome this problem Perl also allow you to pass the reference of this array to an function, with this approach the local copy of this array is not created but instead the operation is done on the main array and hence it saves the time and space for your application.
 
The following is an example of a similar subroutine that refers to an array by reference:

Source: cat array_aliasing.pl
#!/usr/bin/perl

@array = (1, 2, 3, 4, 5);
&array_ref (*array);
print "The new value of same array is: @array \n";

sub array_ref {
        local (*printarray) = @_;
        for ($i = 0; $i <= $#printarray ; $i++) {
                @printarray[$i] = int (rand(100) + 5);
        }
}

print "-------------------------------- \n";

@array2 = (1, 2, 3, 4, 5);
&array_ref2 (@array2);
print "Oops, the value of array2 is not changed: @array2 \n";

sub array_ref2 {
        local @sub_array = @_;
        for ($i = 0; $i <= $#sub_array ; $i++) {
                @sub_array[$i] = int (rand(100) + 5);
        }
}

Output: perl array_aliasing.pl
The new value of same array is: 75 94 38 90 24
--------------------------------
Oops, the value of array2 is not changed: 1 2 3 4 5 






0 comments:

Post a Comment

Related Posts with Thumbnails