"Charles K. Clarkson" <[EMAIL PROTECTED]> writes:
> Harry Putnam <[EMAIL PROTECTED]> wrote:

[...]

Wants to exit a while loop  inside a File::Find \&wanted sub routine.
Is exiting the while loop sufficient.. or does one need to exit from
the current file being offered by `sub find()'

> : So using the `next LABEL' technique how do I
> : designate the wanted() subroutine as target?
> : Something like this:
> : 
> : sub LABEL: wanted {
>
>     I haven't tested it, but I would think this would fail.
>
> :   open(FILE,"<File::Find::name");
> :   while (<FILE>){
> :     if(something) {
> :         then do something
> :     }else{
> :        next LABEL;
> :     }
> :   }
> : }
>
>     As I understand this, you want to immediately open
> a new file found in current file with the current while
> loop. Is that correct?

Yes...

>     First, we need to know a few things.
>
>     Are you wanting to recursively call the entire
> wanted() subroutine?

I guess not no.  I just want to go on to the next file it has found

>     Or do you just want to call the while loop portion
> only and continue with the execution after?

Yes

>     Is it alright to clobber the currently open file or
> do we need to continue processing it afterward?

It needs to be clobbered.  This file has been processed to a point
where it has already failed tests that show if this file has what we
want.

>     Is there any test needed to be certain we are not
> opening the same file again?

I don't think so, but not really sure of the internals of File::Find.
I was assuming if I threw down the file it hands me.  It would hand
me a new different one.

The files offered by `wanted()' are filtered thru an `if' clause

I left this fact out by accident.
sub wanted {
  if(/^\d+$/){.processing..
     open(FILE),"$File::Find::name";
     while(<FILE>{
        if(something){
            do something
        }else{
          next LABEL;
        }
     }
  }
} 

Looking at this simplified diagram... I think I may have answered my
own question..  
I want to exit to just above the first `if' filter.  I guess just
exiting the while loop will do that.
so: LABEL: while(<FILE>){ processing}

is sufficient?


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


Reply via email to