my $sq = sub { $_[0]**2 }; my $id = sub { $_[0] }; sub sum { my ($a,$b,$func) =@_; $func //= $id; my $sum; $sum += $func->($_) for ($a..$b); return $sum; } sub sum_sq{ sum($_[0],$_[1],$sq)} $,=","; print sum(3,5),sum_sq(3,5); # 12,50