my $square_this = sub { my $x = shift; return $x**2; }; #### sub square { my $x = shift; return $x**2; } my $square_this = \□ #### my $squared = $square_this->($hypotenuse); #### package Square; sub square { my $x = shift; return $x**2; } #### my $squared = square($hypotenuse); #### my $squared = Square::square($hypotenuse); #### use Square qw(square); my $squared = square($hypotenuse); #### { # closure for cubed my $square = sub { my $x = shift; return $x**2; }; sub cubed { my $z = shift; return $z*$square->($z); } } # end closure for cubed