ex::override

ex::override is a Perl pragma to override core functions.
Download

ex::override Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Perl Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • Casey West
  • Publisher web site:
  • http://search.cpan.org/~cwest/

ex::override Tags


ex::override Description

ex::override is a Perl pragma to override core functions. ex::override is a Perl pragma to override core functions.SYNOPSIS use ex::override ucfirst => sub { # make sure only the first # letter is uppercased ucfirst( lc( shift ) ); }; ucfirst( 'MAKE THIS RIGHT' ); # Make this right no ex::override 'ucfirst'; ucfirst( 'MAKE THIS RIGHT' ); # MAKE THIS RIGHT"ex::override" is an easy way to override core perl functions.Overriding a function use ex::override length => &mylength, open => &myopen;Overriding a core function happens at compile time. Arguments are passed to "ex::override" in a name based, or hash style. The key is the name of the core function to override, the value is your subroutine to replace the core's.Using an overriden funtionNothing changes on the surface. If you override "stat", then you still use "stat" the same way.NOTE: This is only true if you are keeping the same prototype as the function you've overriden. To do this, you must define your prototype: use ex::override values => sub (%) { values %{+shift} };If you don't use this same prototype or force yourself to use the function the same, you can extend the functionality of a core function: # length of all arguments passed to length() use ex::override length => sub { length join '', @_ };Overriding a function globalyDon't do this without a very good reason!"ex::override" allows you the ability to override core functions globaly. Any packages that inherit from yours will use your function override. There are good reasons for doing this, if you think you need to, make sure you have a good reason. use ex::override GLOBAL_length => sub { # prevent someone from passing a list croak "Don't do that!" if @_ > 1; length shift };NOTE: If you globaly override a function in a package, only that package can remove it.Removing your overrideThis works the same way that "no strict" works. no ex::override; # remove _all_ overrides no ex::override 'values'; no ex::override 'GLOABL_length';Requirements:· Perl Requirements: · Perl


ex::override Related Software