use warnings; use strict; sub multipop(\@$); my @array = (1 .. 10); my @result = multipop @array, 3; print "@array\n"; print "@result\n"; sub multipop(\@$) { my $count = pop; my @vars; $count = 1 if ! defined $count; # default to normal pop behavior if ( $count =~ /^\d+$/ ) { my $length = scalar @{$_[0]}; $count = $length if $count > $length; # Using @{$_[0]} to ensure that we modify original array push @vars, splice ( @{$_[0]}, -$count, $count ) if $count > 0; return @vars; } else { warn "Second argument to multipop must be numeric: '$count'"; } } #### my @result = multipop @array, 3;