> ...
>
> I'm not sure why you don't just pass $task as an argument to the
> report_xxx subs...?
>
> A closure (perldoc -q closure)  would be the long way around unless
> I've missed something:
>
> my $task;
> my $iter;
> my $report_static = sub { my $ref = shift;
>                                      print  $ref->[$iter++];
>                                       ....
>                                     };
>
> my $report_dynamic = sub( my $ref = shift;
>                                            print $ref->[$iter++];
>                                        ...
>
> #MAIN_CODE START
> ....
> foreach $task (@tasks) {
>      if ( .... )
>            $report_static->(\@tasks);
>            ...
>      else
>             $report_dynamic->(\@tasks);
>            ...
>      }
> }
>
>

You could also simplify the closure  since @tasks is in the closure's
lexical scope, eg,

my $report_static = sub {   print $tasks[$iter++]; ... };

foreach $task (@tasks) {
      if (...)
          $report_statics->();
      else
          $report_dynamic->();
      ...
}

But with everything in lexical scope, you could just  pass any needed
arg's directly and
eliminate the closure altogether.


-- 
Charles DeRykus

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to