trying to understand closure and callback(bit over my head but)

while I think i grasp most of the ideas from below program.. I don't think I understand why ( ) is needed in

my $sum = $subs{$_}{GETTER}->( );


#!/usr/bin/perl

use warnings;
use strict;

use File::Find;

sub create_find_callbacks_that_sum_the_size {
    my $total_size = 0;
    return(sub { $total_size += -s if -f }, sub { return $total_size } );
}

## set up the subroutines
my %subs;
for my $dir ( qw(bin lib man) ) {
    my ( $callback, $getter ) = create_find_callbacks_that_sum_the_size( );
    $subs{$dir}{CALLBACK} = $callback;
    $subs{$dir}{GETTER}   = $getter;
}

## gather the data
for ( keys %subs ) {
    find($subs{$_}{CALLBACK}, $_);
}

## show the data
for ( sort keys %subs ) {
    my $sum = $subs{$_}{GETTER}->( );
    print "$_ has $sum bytes\n";
}

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


Reply via email to