Blame lib/File/Find/Object/Rule/Procedural.pod

Packit 26bf30
=head1 NAME
Packit 26bf30
Packit 26bf30
File::Find::Object::Rule::Procedural - File::Find::Object::Rule's procedural interface
Packit 26bf30
Packit 26bf30
=head1 SYNOPSIS
Packit 26bf30
Packit 26bf30
  use File::Find::Object::Rule;
Packit 26bf30
Packit 26bf30
  # find all .pm files, procedurally
Packit 26bf30
  my @files = find(file => name => '*.pm', in => \@INC);
Packit 26bf30
Packit 26bf30
=head1 DESCRIPTION
Packit 26bf30
Packit 26bf30
In addition to the regular object-oriented interface,
Packit 26bf30
L<File::Find::Object::Rule> provides two subroutines for you to use.
Packit 26bf30
Packit 26bf30
=over
Packit 26bf30
Packit 26bf30
=item C<find( @clauses )>
Packit 26bf30
Packit 26bf30
=item C<rule( @clauses )>
Packit 26bf30
Packit 26bf30
C<find> and C<rule> can be used to invoke any methods available to the
Packit 26bf30
OO version.  C<rule> is a synonym for C<find>
Packit 26bf30
Packit 26bf30
=back
Packit 26bf30
Packit 26bf30
Passing more than one value to a clause is done with an anonymous
Packit 26bf30
array:
Packit 26bf30
Packit 26bf30
 my $finder = find( name => [ '*.mp3', '*.ogg' ] );
Packit 26bf30
Packit 26bf30
C<find> and C<rule> both return a File::Find::Object::Rule instance, unless
Packit 26bf30
one of the arguments is C<in>, in which case it returns a list of
Packit 26bf30
things that match the rule.
Packit 26bf30
Packit 26bf30
 my @files = find( name => [ '*.mp3', '*.ogg' ], in => $ENV{HOME} );
Packit 26bf30
Packit 26bf30
Please note that C<in> will be the last clause evaluated, and so this
Packit 26bf30
code will search for mp3s regardless of size.
Packit 26bf30
Packit 26bf30
 my @files = find( name => '*.mp3', in => $ENV{HOME}, size => '<2k' );
Packit 26bf30
                                                    ^
Packit 26bf30
                                                    |
Packit 26bf30
               Clause processing stopped here ------/
Packit 26bf30
Packit 26bf30
It is also possible to invert a single rule by prefixing it with C
Packit 26bf30
like so:
Packit 26bf30
Packit 26bf30
 # large files that aren't videos
Packit 26bf30
 my @files = find( file    =>
Packit 26bf30
                   '!name' => [ '*.avi', '*.mov' ],
Packit 26bf30
                   size    => '>20M',
Packit 26bf30
                   in      => $ENV{HOME} );
Packit 26bf30
Packit 26bf30
Packit 26bf30
=head1 AUTHOR
Packit 26bf30
Packit 26bf30
Richard Clamp <richardc@unixbeard.net>
Packit 26bf30
Packit 26bf30
=head1 COPYRIGHT
Packit 26bf30
Packit 26bf30
Copyright (C) 2003 Richard Clamp.  All Rights Reserved.
Packit 26bf30
Packit 26bf30
This module is free software; you can redistribute it and/or modify it
Packit 26bf30
under the same terms as Perl itself.
Packit 26bf30
Packit 26bf30
=head1 SEE ALSO
Packit 26bf30
Packit 26bf30
L<File::Find::Object::Rule>
Packit 26bf30
Packit 26bf30
=cut