From: Kevin Pfeiffer <[EMAIL PROTECTED]> > I'm doing an exercise with coderefs and wondering if there is much > difference between my answer and the one given... > > Here is my subroutine that returns two coderefs... > > sub gather_mtime_between { > my ($start, $stop) = @_; > my @files = (); > return (sub { > my $timestamp = (stat $_)[9]; > if ( -f and $timestamp >= $start and $timestamp <= $stop) { > push @files, $File::Find::name; > } > }, > sub { return @files }); > } > > The answer given is almost identical (but with error checking for the > stat call). But it includes variables for the subroutines... > > sub gather_mtime_between { > # etc. > my $gatherer = sub { #first coderef variable > # sub much the same > } > my $fetcher = sub { # second > # same > } > } > > In both cases the sub is called like this: > my($gatherer, $yield) = gather_mtime_between($start, $stop); > > As I understand this, mine returns two anonymous coderefs and the > given answer assigns the coderefs to two variables whose contents are > then returned (and these two variable names go immediately out of > scope)? Is there any reason to use the variables here?
Just readability. It doesn't make any difference from the outside. > And while I'm wasting bandwidth... this subroutine needs to always > come first -- or be in a BEGIN block? No. You can treat the sub just like any other. Jenda ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]