GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
File::Find::Rule::Extending(3) User Contributed Perl Documentation File::Find::Rule::Extending(3)

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

 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;

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.

 package File::Find::Rule::Random;
 use strict;

 # 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, we're being very cavalier here and defining things into the main File::Find::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::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.

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.

Richard Clamp <richardc@unixbeard.net>

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.

File::Find::Rule

File::Find::Rule::MMagic was the first extension module, so maybe check that out.

2015-12-03 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.