in the past, i've advocated the use of FileHandle to deal with scoping and stricture issues. i still use FileHandle, but i've come up with another way to avoid namespace pollution -- anonymous subroutines. it doesn't solve stricture problems, but i don't use strict in CGI production code anyway -- it speeds things up quite a bit. i do, and always will, use strict in development (please do the same!)
attached is a snippet for extracting files from a directory. notice the use of an anonymous subroutine, including passed parameters. i localize the handle within the sub, do my processing, and return an array -- and no messy namespace clutter to worry about later.
my $dir = '/path/to/files'; my @files = sub{ local *DH; opendir( DH, $_[0] ) or die 'Cannot open ' . $_[0]; return grep { -f $_ } readdir(DH); }->( $dir );
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: localizing handles with anonymous subroutines
by jmcnamara (Monsignor) on Jun 10, 2002 at 13:30 UTC | |
by particle (Vicar) on Jun 10, 2002 at 16:13 UTC |