How do I call sort with an anonymous subroutine stored in a hash ??

From: Casey (mail_at_nowhere.com)
Date: 01/30/04


Date: Fri, 30 Jan 2004 07:28:21 GMT

Hi, I haven't being using perl for too long. Can someone explain the
correct way to get the sort function to recognize an anonymous function
declared as a hash value? Look at my sample code for clarification:

#!/usr/bin/perl

@my_array = qw( g a z f u q m i e b );
$hash{my_sort_sub} = sub { $a cmp $b };
$hash{test_routine} = sub { print "test_routine works\n" };
&{$hash{test_routine}};
print @my_array;
print "\n";
print( sort &{$hash{my_sort_sub}} @my_array );
print "\n";

The code fails to compile with error:

Array found where operator expected at ./test.pl line 9, near "} "
        (Missing operator before ?)
syntax error at ./test.pl line 9, near "} @my_array "
Execution of ./test.pl aborted due to compilation errors.

Help! I don't see what's wrong with this.