From: Dermot <[EMAIL PROTECTED]> > I was have to create a script to search and find files. The files will > end in 'a.txt', 'b.txt', 'c.txt', so a record could have 123a.txt, > 123b.txt, 123c.txt. > > There may be lots of ways to achieve my goal but I got curious about > how to create a structure that, for each record would store the > associated files. Below is what I started out with. The hash tries 3 > ways to either return a code reference or a true/false value if the > file exists. I have tried putting junk values in the hash values - sub > { return -e "$File::Find::dir/${num}Z.txt"} - but it always ouputs > with a YES. > > So how do you create a code reference in this context, should I create > a code reference or use something else and what should I be test the > hash values for? > Thanx in advance. > Dp. > > > > #!/usr/bin/perl > > use strict; > use warnings; > use File::Find; > > my $root = shift; > my @records; > > find(\&wanted, $root); > > for (@records) { > print $_->{name},"\t"; > foreach my $l (qw/a b c j/) { > if ($_->{$l}) {
You never called the referenced subroutine. To do that you have to use if ($_->{$l}->()) { or if (&{$_->{$l}}) { The $_->{$l} is the reference and references are always true. 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] http://learn.perl.org/