in reply to Re^2: Why callbacks?
in thread Why callbacks?

I presume this was asked before I moved the brace, but even then no. The scalar would have (which is why I made the correction), but the subroutine sticks around (they're not lexically declared). Had I done this:

{ my $returned_data = []; my $callback = sub { push @{ $returned_data }, $_[0] }; } something_wanting_callback( $callback );

Then yes, that coderef would have gone out of scope.

Replies are listed 'Best First'.
Re^4: Why callbacks?
by pileofrogs (Priest) on Mar 30, 2007 at 17:32 UTC

    So, all subrutines are in effect global? Huh.. I didn't know that.

    -Pileofrogs

    In Other News:
    Whoever keeps downvoting me, please tell me what it is that you don't like... I can't get better if you don't tell me what's wrong...

      Named subs all reside in the symbol table of the active package when they're declared (if the name is unqualified, that is; it's also possible to stick a sub into another package's namespace by fully qualifying the name: sub Other::Package::foo { ... }). It's also possible to get a sub which is only useable within a particular lexical scope by storing a coderef in a lexical scalar.

      { my $private_sub = sub { print "I'M IN UR SCOPE HIDIN UR LEXICALZ\n" } ## Can be called here $private_sub->( ); } ## Can't call it here