(The post about 'purge' just made me remember this idea)

Lets say you have a list of program arguments.

    @ARGV = ('foo', '--bar=baz', 'yar');

and you want to seperate that into two lists.  One of switches and one of
normal args.  You can't just use a grep, you'd have to do this:

    my @switches = ();
    my @args = ();
    foreach (@ARGV) {
        if( /^-/ ) {
            push @switches, $_;
        }
        else {
            push @args, $_;
        }
    }

and that's just entirely too much work.  I'd love to be able to do it with a
grep like thing.

     (@switches, @args) = seperate /^-/, @ARGV;

seperate() simply returns two lists.  One of elements which match, one of
elements which don't.  I think Perl 6 will allow the above syntax to work
rather than having to play with array refs.


An alternative/additional way to do it would be as an Array method.

   @switches = @ARGV.cull /^-/;

Array.cull would remove and return a list of every element in @ARGV which
matched.


-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl Quality Assurance      <[EMAIL PROTECTED]>         Kwalitee Is Job One
Let me check my notes.
        http://www.sluggy.com

Reply via email to