my @vars = (7, 12, 49, 44); sub bubble_sort { for my $i (1 .. $#vars) { for my $j (0 .. $i-1) { print "vars[$i]=$vars[i], vars[$j]=$vars[j]: "; if ($vars[i]<$vars[j]) { print "vars[$i]=vars[$j], no swap needed.\n"; } } } } #### my @vars = (7, 12, 49, 44); sub bubble_sort { my $rfunc = shift; for my $i (1 .. $#vars) { for my $j (0 .. $i-1) { if (&($rfunc)($vars[i], $vars[j])) { my $t=$vars[i]; $vars[$i]=$vars[$j]; $vars[$j]=$t; } } } } #### sub ascending { my ($left, $right) = @_; return $right > $left; } bubble_sort(\ascending); #### bubble_sort(sub { my ($left, $right)=@_; return $right>$left });