in reply to HOP Iterator Ex4.3-- Illegal declaration

The problem is probably with this line:

sub $is_WrappedXml {

You either want a named sub (drop the $) or you want my $is_WrappedXml = sub { ... }.

Replies are listed 'Best First'.
Re^2: HOP Iterator Ex4.3-- Illegal declaration
by ady (Deacon) on Mar 03, 2006 at 15:46 UTC
    ooOOOOOPPPss, Yes of course -- some months since i've been in Perl land...
    sorry- but Thanks!
    Allan
      Ok, up n' running :
      use strict; use warnings; ### -------------------------- Util ----------------------- sub Iterator (&) { return $_[0] } sub NEXTVAL { $_[0]->() } ### -------------------------- Iterator ------------------- sub interesting_files { my $is_interesting = shift; my @queue = @_; return Iterator { while (@queue) { my $file = shift @queue; if (-d $file) { opendir my $dh, $file or next; my @newfiles = grep {$_ ne "." && $_ ne ".."} readdir + $dh; push @queue, map "$file/$_", @newfiles; } return $file if $is_interesting->($file); } return; }; } ### -------------------------- FileMask ------------------- sub is_WrappedXml { my $file = shift; return 1 if $file =~ /WrappedXml.{0,5}\.xml/i; return; } ### -------------------------- MAIN ----------------------- my $WrappedXml_file = interesting_files(\&is_WrappedXml, '.'); while (defined(my $file = NEXTVAL($WrappedXml_file))) { print "$file\n"; }

      Best regards, Allan Dystrup