#!/usr/bin/perl use strict; use warnings; my @array = map { A->new($_) } 1..100; sub backward { $b->value <=> $a->value } mysort(\&backward); sub mysort { my $func = shift; print join("\n", map { $_->value } sort $func @array); } package A; sub new { my $class = shift; my $val = shift; return bless [$val], $class; } sub value { my $class = shift; return $class->[0]; } 1;