On Tue, Apr 21, 2009 at 21:15, John W. Krahn <[email protected]> wrote:
> Kelly Jones wrote:
>>
>> I want foo() and bar() to do the same thing. One way to do this:
>>
>> sub foo {return bar(@_);}
>>
>> Is there a more clever way using \&bar and things like that?
>
> $ perl -le'
> use warnings;
> use strict;
>
> sub bar { print "in sub bar: @_" }
>
> bar 1, 2, 3;
>
> sub foo { goto &bar }
>
> foo 4, 5, 6;
> '
> in sub bar: 1 2 3
> in sub bar: 4 5 6
>
snip
goto &func; replaces the current subroutine with the called one
in the same way exec replaces the current process. Another
solution is to actually alias the two functions:
#!/usr/bin/perl
use strict;
use warnings;
sub foo {
print join(", ", @_), "\n";
}
*bar = *foo;
foo(1, 2, 3);
bar(1, 2, 3);
You might also want to look on search.cpan.org for modules in the
Sub::* hierarchy. One of them may give you a better interface.
--
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/