File::F...xtending(3)
πΈ NAME πΈ
okay bestie, welcome to File::F...xtending(3) from the User Contributed Perl Documentation. This page is all about File::Find::Rule::Extending β the mini-guide to extending File::Find::Rule. It's the little how-to for making your own extension without getting tangled up. π
β¨ SYNOPSIS β¨
Here's the whole snack in code form:
package File::Find::Rule::Random;
use strict;
# take useful things from File::Find::Rule
use base 'File::Find::Rule';
# and force our crack into the main namespace
sub File::Find::Rule::random () {
my $self = shift()->_force_object;
$self->exec( sub { rand > 0.5 } );
}
1;
π DESCRIPTION π
okay so File::Find::Rule went down so well with the buying public that everyone wanted to add extra features. With the 0.07 release this became a possibility, using the following conventions. π
π Declare your package π
First up, declare your package like this:
package File::Find::Rule::Random;
use strict;
π¦ Inherit methods from File::Find::Rule π¦
Then grab the useful stuff by inheriting from File::Find::Rule:
# take useful things from File::Find::Rule
use base 'File::Find::Rule';
Force your madness into the main package.
# and force our crack into the main namespace
sub File::Find::Rule::random () {
my $self = shift()->_force_object;
$self->exec( sub { rand > 0.5 } );
}
Yes, this is being very cavalier: it defines things into the main File::Find::Rule namespace. That's due to a lack of imaginiation on the author's part β the author 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::Rule::Foo modules together. π
For this reason, try and pick distinct names for your extensions. If this becomes a problem, the author may institute a semi-official registry of taken names. iykyk β¨
π 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. the more you know β
π 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::Ruleβ go look, bestie.File::Find::Rule::MMagicβ this was the first extension module, so maybe check that out. π
mwah π that's the whole page, bestie. It's from perl v5.42.0, dated 2025-06-11, and the page is File::F...xtending(3). go slay your extensions π§β¨
π¦ where this page comes from
- opensuse-leap 16.0: perl-File-Find-Rule 0.350.0-160000.2.2 Β· Artistic-1.0 OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms