in reply to Re^3: How to conditionally execute a subroutine defined as hash value
in thread How to conditionally execute a subroutine defined as hash value

Thanks but I need to pass %config_A when $test is A, and %config_B when $test is B.
  • Comment on Re^4: How to conditionally execute a subroutine defined as hash value

Replies are listed 'Best First'.
Re^5: How to conditionally execute a subroutine defined as hash value
by Corion (Patriarch) on Apr 02, 2014 at 10:55 UTC

    Then consider passing the appropriate parameter, depending on $test?

    my $config= 'A' eq $test ? \%config_A : \%config_B;

    Or even better, do the same for your data as you already did for your code:

    my %config= ( A => \%config_A, B => \%config_B, ); my $config= $config{ $test } or die "Unknown test '$test'";
      Thanks but it was a simplified example from what I'm doing. I need to test a templating system and so my stuff is more like this below and BrowserUK's solution allows me to set all in a single sub definition. However I like your solution too and I'll keep it in mind for other contexts. Thanks!
      my $test = 'show_stop_user'; my $calls = { show_home => sub { show_home($config) }, show_stop_user => sub { show_stop_user($config, {user=>'dummy',type=>'Users'}) }, admin_users_new_1 => sub { show_admin_user($config, { action=>'add', messages=>{ success=>['line1','line2'] }})}, admin_users_new_2 => sub { show_admin_user($config, { action=>'add' }) }, }; $calls->{$test}();
      Now I need to find out how I can redirect the Template::Toolkit output to the file $test.'.html' instead of screen...

        Thanks for finally letting us know what you really want.