Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
File::Find::Object::RuUserEContributed PFile::Find::Object::Rule::Extending(3)

NAME
       File::Find::Object::Rule::Extending - the mini-guide to extending
       File::Find::Object::Rule

VERSION
       version 0.0313

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 possible 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.

SUPPORT
   Websites
       The following websites have more	information about this module, and may
       be of help to you. As always, in	addition to those websites please use
       your favorite search engine to discover more resources.

       o   MetaCPAN

	   A modern, open-source CPAN search engine, useful to view POD	in
	   HTML	format.

	   <https://metacpan.org/release/File-Find-Object-Rule>

       o   RT: CPAN's Bug Tracker

	   The RT ( Request Tracker ) website is the default bug/issue
	   tracking system for CPAN.

	   <https://rt.cpan.org/Public/Dist/Display.html?Name=File-Find-Object-Rule>

       o   CPANTS

	   The CPANTS is a website that	analyzes the Kwalitee (	code metrics )
	   of a	distribution.

	   <http://cpants.cpanauthors.org/dist/File-Find-Object-Rule>

       o   CPAN	Testers

	   The CPAN Testers is a network of smoke testers who run automated
	   tests on uploaded CPAN distributions.

	   <http://www.cpantesters.org/distro/F/File-Find-Object-Rule>

       o   CPAN	Testers	Matrix

	   The CPAN Testers Matrix is a	website	that provides a	visual
	   overview of the test	results	for a distribution on various
	   Perls/platforms.

	   <http://matrix.cpantesters.org/?dist=File-Find-Object-Rule>

       o   CPAN	Testers	Dependencies

	   The CPAN Testers Dependencies is a website that shows a chart of
	   the test results of all dependencies	for a distribution.

	   <http://deps.cpantesters.org/?module=File::Find::Object::Rule>

   Bugs	/ Feature Requests
       Please report any bugs or feature requests by email to
       "bug-file-find-object-rule at rt.cpan.org", or through the web
       interface at
       <https://rt.cpan.org/Public/Bug/Report.html?Queue=File-Find-Object-Rule>.
       You will	be automatically notified of any progress on the request by
       the system.

   Source Code
       The code	is open	to the world, and available for	you to hack on.	Please
       feel free to browse it and play with it,	or whatever. If	you want to
       contribute patches, please send me a diff or prod me to pull from your
       repository :)

       <https://github.com/shlomif/http://bitbucket.org/shlomif/perl-file-find-object-rule>

	 git clone git://github.com/shlomif/http://bitbucket.org/shlomif/perl-file-find-object-rule.git

AUTHORS
       o   Richard Clamp <richardc@unixbeard.net>

       o   Andy	Lester andy@petdance.com.

BUGS
       Please report any bugs or feature requests on the bugtracker website
       <https://github.com/shlomif/http://bitbucket.org/shlomif/perl-file-find-object-rule/issues>

       When submitting a bug or	request, please	include	a test-file or a patch
       to an existing test-file	that illustrates the bug or desired feature.

COPYRIGHT AND LICENSE
       This software is	copyright (c) 2021 by Richard Clamp.

       This is free software; you can redistribute it and/or modify it under
       the same	terms as the Perl 5 programming	language system	itself.

perl v5.32.1			  2022-1File::Find::Object::Rule::Extending(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | NOTES ABOUT THE CALLBACK | AUTHOR | COPYRIGHT | SEE ALSO | SUPPORT | AUTHORS | BUGS | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=File::Find::Object::Rule::Extending&sektion=3&manpath=FreeBSD+13.1-RELEASE+and+Ports>

home | help