#!/usr/bin/perl use strict; use warnings; my $sortby = setsort(1); for my $rec ( sort $sortby->() (2,6,1) ) { print $rec, "\n"; } sub setsort { my $type = shift; return sub { $a <=> $b } if ( uc($type) eq "PTR" ); return sub { $a cmp $b }; } Use of uninitialized value in string comparison (cmp) at ./t7.pl line 14. Use of uninitialized value in string comparison (cmp) at ./t7.pl line 14. Can't use string ("0") as a subroutine ref while "strict refs" in use at ./t7.pl line 6.