http://www.perlmonks.org?node_id=1034611

JockoHelios has asked for the wisdom of the Perl Monks concerning the following question:

I can sort an array passed into a subroutine, but I can't reverse sort or use a custom sort on that array.

I can't get subroutines to do much of anything with passed arrays. This is one of sevearl array-subroutine tests that I've tried over the last two days. I have tried variations with passing array references, but to no avail.

# test subroutines with an array $var = 8; push( @TaR, $var ); $var = 2; push( @TaR, $var ); $var = 5; push( @TaR, $var ); $var = 4; push( @TaR, $var ); $var = 5; push( @TaR, $var ); $var = 6; push( @TaR, $var ); $var = 1; push( @TaR, $var ); $var = 8; push( @TaR, $var ); print STDOUT "\n\n"; print STDOUT "\n\nAs-is "; # This segment works for $OneLine( @TaR ) { print STDOUT " $OneLine"; } print STDOUT " Done\n\n"; SortedArray( @TaR ); ReversedArray( @TaR ); print STDOUT "\n\n"; # This sort works sub SortedArray { my @PassedArray = @_; my @SortedArray = sort @PassedArray; print STDOUT "\n\nSorted "; for $SubLine( @SortedArray ) { print STDOUT " $SubLine"; } print STDOUT " Done\n\n"; return 1; } # This sort, but doesn't reverse the sort sub ReversedArray { my @PassedArray = @_; my @SortedArray = sort reverse @PassedArray; print STDOUT "\n\nRvrsd "; for $SubLine( @SortedArray ) { print STDOUT " $SubLine"; } print STDOUT " Done\n\n"; return 1; }