use subs permite la sustitución 
de un operador en el ámbito de un paquete. 
Si se quiere sustituir cualquier referencia (desde el
paquete o fuera de él) al operador
por la nueva versión es necesario declarar la 
nueva versión dentro del paquete  CORE::GLOBAL :
$ perl -e 'BEGIN { *CORE::GLOBAL::system = sub { print "hello $_[0]\n" } } system "foo"'
hello foo
Sigue un ejemplo en el que reeemplazamos gobalmente 
el operador glob:
lhp@nereida:~/Lperl/src$ cat -n coreglob.pl
 1  #!/usr/local/bin/perl -w
 2  package Tutu;
 3  use strict;
 4
 5  {
 6    no warnings;
 7    *CORE::GLOBAL::glob = sub {
 8      my $regexp = shift;
 9
10      opendir my $DIR, "." or die "$!";
11      my @files = grep /$regexp/, readdir $DIR;
12      close($DIR);
13      return @files;
14    };
15  }
16  1;
17
18  package main;
19  use strict;
20
21  sub tutu {
22    my @a = glob('^.[cd][ba].*\.pl');
23    local $" = "\n";
24    return "@a\n";
25  }
26
27  print "---------main-----------\n";
28  print tutu;
ahora la llamada en el paquete main a glob
encuentra la nueva versión:
lhp@nereida:~/Lperl/src$ coreglob.pl ---------main----------- idbetcurly.pl pcap.pl scalar_sets.pl scalar_sets2.pl sdbm.pl sdbm2.pl
Casiano Rodríguez León
