I have a script and such a package:
# file: sortscript.pl use strict; use warnings; use SortPackage; my @arrays = ([1,"array1"],[10,"array3"],[4,"array2"]); print "Using sort outside package\n"; foreach (sort SortPackage::simplesort @arrays){ print $_->[1],"\n"; } print "\nUsing sort in same package\n"; SortPackage::sort_from_same_package(@arrays);
-
# file: SortPackage.pm use strict; use warnings; package SortPackage; sub simplesort{ return ($a->[0] <=> $b->[0]); } sub sort_from_same_package{ my @arrs = @_; foreach (sort simplesort @arrs){ print $_->[1],"\n"; } } 1;
Running the script prints the result:
$ perl sortscript.pl Using sort outside package Use of uninitialized value in numeric comparison (<=>) at SortPackage.pm line 15. Use of uninitialized value in numeric comparison (<=>) at SortPackage.pm line 15. Use of uninitialized value in numeric comparison (<=>) at SortPackage.pm line 15. Use of uninitialized value in numeric comparison (<=>) at SortPackage.pm line 15. Use of uninitialized value in numeric comparison (<=>) at SortPackage.pm line 15. Use of uninitialized value in numeric comparison (<=>) at SortPackage.pm line 15. array1 array3 array2 Using sort in same package array1 array2 array3
Why can't I use the subroutine to sort correctly when it is in another package?
MattLBeck
source share