On 8/3/05, John W. Krahn <[EMAIL PROTECTED]> wrote:
> marcos rebelo wrote:
> > I need to redefine localy one subroutine and have it correctlly after.
> > How do I do it?
> 
> $ perl -e'
> my $myPrint = sub { print "Teste 1\n" };
> 
> sub test { $myPrint = sub { print "Teste 2\n" } }
> 
> $myPrint->();
> test;
> $myPrint->();
> exit;
> '
> Teste 1
> Teste 2

If you combine this solution with local variables, you can do exactly
what you need:

#!/usr/bin/perl
use strict;
use warnings;
our $print = sub { print "test 1\n" };
sub test { $print = sub { print "test 2\n" } }
$print->();
{
  local $print = $print;
  $print->();
  test();
  $print->();
}
$print->();

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to