debian man page for file::find::object::rule::extending

Query: file::find::object::rule::extending

OS: debian

Section: 3pm

Format: Original Unix Latex Style Formatted with HTML and a Horizontal Scroll Bar

File::Find::Object::Rule::Extending(3pm)		User Contributed Perl Documentation		  File::Find::Object::Rule::Extending(3pm)

NAME
File::Find::Object::Rule::Extending - the mini-guide to extending File::Find::Object::Rule
SYNOPSIS
package File::Find::Object::Rule::Random; use strict; use warnings; # take useful things from File::Find::Object::Rule use base 'File::Find::Object::Rule'; # and force our crack into the main namespace sub File::Find::Object::Rule::random () { my $self = shift()->_force_object; $self->exec( sub { rand > 0.5 } ); } 1;
DESCRIPTION
File::Find::Object::Rule inherits File::Find::Rule's extensibility. It is now possibile to extend it, using the following conventions. Declare your package package File::Find::Object::Rule::Random; use strict; use warnings; Inherit methods from File::Find::Object::Rule # take useful things from File::Find::Object::Rule use base 'File::Find::Object::Rule'; Force your madness into the main package # and force our crack into the main namespace sub File::Find::Object::Rule::random () { my $self = shift()->_force_object; $self->exec( sub { rand > 0.5 } ); } Yes, we're being very cavalier here and defining things into the main File::Find::Object::Rule namespace. This is due to lack of imaginiation on my part - I simply can't find a way for the functional and oo interface to work without doing this or some kind of inheritance, and inheritance stops you using two File::Find::Object::Rule::Foo modules together. For this reason try and pick distinct names for your extensions. If this becomes a problem then I may institute a semi-official registry of taken names. Taking no arguments. Note the null prototype on random. This is a cheat for the procedural interface to know that your sub takes no arguments, and so allows this to happen: find( random => in => '.' ); If you hadn't declared "random" with a null prototype it would have consumed "in" as a parameter to it, then got all confused as it doesn't know about a '.' rule.
NOTES ABOUT THE CALLBACK
The callback can access the File::Find::Object::Result using "$self->finder->item_obj()".
AUTHOR
Richard Clamp <richardc@unixbeard.net>
COPYRIGHT
Copyright (C) 2002 Richard Clamp. All Rights Reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
File::Find::Object::Rule File::Find::::Rule::MMagic was the first extension module for File::Find::Rule, so maybe check that out. perl v5.14.2 2012-05-05 File::Find::Object::Rule::Extending(3pm)
Related Man Pages
file::find::rule::extending5.18(3) - mojave
file::find::rule::extending(3) - mojave
file::find::rule::extending(3) - osx
file::find::rule::extending(3) - centos
file::find::rule::extending(3pm) - debian
Similar Topics in the Unix Linux Community
Find command problem
Find Files in Directory by Permission?
Find and replace using sed
Find File with space
Find most and second most abundant value