peer definida en la línea 22
llama a la subrutina interior. ¿Podría identificar 
que subrutina es llamada? ¿La de la línea 5 o la de la 
línea 14?
lhp@nereida:~/Lperl/src$ cat -n localsub.pl
 1  #!/usr/bin/perl
 2  use strict;
 3  use warnings;
 4
 5  sub interior {
 6    my $x = shift;
 7    print "En sub 'interior global': $x\n";
 8  }
 9
10  sub exterior {
11    my $x = $_[0];
12    no strict 'refs';
13    no warnings;
14    local *interior = sub {
15      print "En sub interior anidada\n";
16      return shift() - 1
17    };
18    print "En sub exterior. Llamo a la sub 'peer(5)'\n";
19    peer(5);
20  }
21
22  sub peer {
23    print "En sub peer. Llamo a 'interior'\n";
24    interior(shift())."\n";
25  }
26
27  exterior(2);
28  interior(3);
Al ejecutar el programa localsub.pl 
se produce la siguiente salida:
lhp@nereida:~/Lperl/src$ localsub.pl En sub exterior. Llamo a la sub 'peer(5)' En sub peer. Llamo a 'interior' En sub interior anidada En sub 'interior global': 3
lhp@nereida:~/Lperl/src$ cat -n  ./privatesub.pl
 1  #!/usr/bin/perl
 2  use strict;
 3  use warnings;
 4
 5  package One;
 6  sub tutu {
 7    my $x = shift;
 8    print "En sub 'One:tutu ': $x\n";
 9  }
10
11  package Two;
12  sub tutu {
13    my $package = caller;
14      die "Attempt to call private function Two:tutu"
15    unless ($package eq __PACKAGE__);
16
17    my $x = shift;
18    print "En sub 'Two:tutu ': $x\n";
19  }
20
21  package main;
22  One::tutu(3);
23  Two::tutu(5);
Casiano Rodríguez León
