http://www.perlmonks.org?node_id=256673

in reply to Re:^3 Passing subroutines as arguments
in thread Passing subroutines as arguments

Thanks... sorry for the stupid mistake. Here's the corrected code:
```#!/usr/bin/perl -w
# summation examples from SICP done in Perl

use strict;
use warnings;

my \$result = &sum_integers(1, 3);
print "sum_integers(1, 3) equals \$result\n";
\$result = &cube(3);
print "cube(3) equals \$result\n";
\$result = &sum_cubes(1, 3);
print "sum_cubes(1, 3) equals \$result\n";
\$result = &sum_cubes2(1, 3);
print "sum_cubes2(1, 3) equals \$result\n";

sub sum_integers {
my (\$a, \$b) = @_;
if (\$a > \$b) { return(0); }
else { return( \$a + &sum_integers((\$a + 1), \$b) ); }
}

sub cube {
my (\$a) = @_;
return( \$a * \$a * \$a );
}

sub sum_cubes {
my (\$a, \$b) = @_;
if (\$a > \$b) { return(0); }
else { return( &cube(\$a) + &sum_cubes((\$a + 1), \$b) ); }
}

sub sum {
my (\$term, \$a, \$next, \$b) = @_;
if (\$a > \$b) { return(0); }
else { return( \$term->(\$a) + &sum( \$term, (\$next->(\$a)), \$next, \$b
+) ); }
}

sub inc {
my (\$n) = @_;
return( \$n + 1 );
}

sub sum_cubes2 {
my (\$a, \$b) = @_;
return( &sum(\&cube, \$a, \&inc, \$b) );
}