in reply to Re^3: Calling functions from different namespaces
in thread Calling functions from different namespaces

If I do it that way, how do i supply arguments to $sub in s1? For example the s2 subroutine takes in 2 parameters. How do I put those parameters into the $sub once I am in s1?

I was thinking of something like:

$sub->($value1, $value2);
But that doesn't work...

Replies are listed 'Best First'.
Re^5: Calling functions from different namespaces
by blazar (Canon) on Jan 19, 2006 at 08:27 UTC

    It does work. Well, it should. What are you really trying to do? It's hard to tell without seeing the rest of your code.

    TT.pm (also taking into account ikegami's very good suggestion)

    # -*- Perl -*- use strict; use warnings; package TT; use base 'Exporter'; our @EXPORT = qw/s1/; sub s1 { my $sub = shift || \&s2; $sub->(qw/foo bar/); } sub s2 { print "Default s2\n"; print "Args: @_\n"; } 1; __END__

    testTT.pl

    #!/usr/bin/perl use strict; use warnings; use TT; # s1 with no args; s1; print "\n"; # s1 with explicit code passed in; s1 sub { local $\="\n"; print "Customized s2"; print "Args:"; print for @_; }; __END__

    (Try it yourself!) output:

    Default s2 Args: foo bar Customized s2 Args: foo bar

    Incidentally, perldoc perlsub and perldoc perlref would help.

      You got it right. Thanks for all your help. I really appreciate it.