modperl-glob_cant_handle_spaces_method_override_techniques

This is part of The Pile, a partial archive of some open source mailing lists and newsgroups.



To: modperl@apache.org
From: George Sanderson <george@xorgate.com>
Subject: [OT] Overridding a module's use of a function
Date: Thu, 11 Oct 2001 17:15:32 -0500

I discovered that File::NCopy uses the function "glob" to expand file
names.  My problem is that I need to pass file names that have spaces in
them and "glob" does not process them.  So I did the following override (I
do not need to expand the file names):

package Apache::AAM;
. . .
package File::NCopy;
use subs qw(glob);
sub glob {@_};
package Apache::AAM;
. . .

Is there a better way to do this?

===

To: George Sanderson <george@xorgate.com>,
modperl@apache.org
From: Robert Landrum <rlandrum@capitoladvantage.com>
Subject: Re: [OT] Overridding a module's use of a function
Date: Thu, 11 Oct 2001 18:41:51 -0400

At 5:15 PM -0500 10/11/01, George Sanderson wrote:
>I discovered that File::NCopy uses the function "glob" to expand file
>names.  My problem is that I need to pass file names that have spaces in
>them and "glob" does not process them.  So I did the following override (I
>do not need to expand the file names):
>
>package Apache::AAM;
>. . .
>package File::NCopy;
>use subs qw(glob);
>sub glob {@_};
>package Apache::AAM;
>. . .

*File::NCopy::glob = sub {@_};  # should do the same thing

I think _Advanced Perl Programming_ covered overriding subs with subrefs...

Rob

===

To: George Sanderson <george@xorgate.com>,
modperl@apache.org
From: Drew Taylor <drew@drewtaylor.com>
Subject: Re: [OT] Overridding a module's use of a function
Date: Thu, 11 Oct 2001 18:45:51 -0400

It's funny you should ask, because I just finished reading that section 
today! :-) On pg 306-7 of the Camel (3rd edition):

*CORE::GLOBAL::glob = sub {
     my $pat = shift;
     my @got;
     # do whatever
     return @got;
}

will override a built-in function everywhere, regardless of namespaces. The 
method you use (namely overriding CORE::function) restricts the overriding 
of the function "to the package that requests the import."

===


the rest of The Pile (a partial mailing list archive)

doom@kzsu.stanford.edu