Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Redefining Imported Subs: of scope and no

by 7stud (Deacon)
on Feb 09, 2013 at 05:50 UTC ( #1017931=note: print w/ replies, xml ) Need Help??


in reply to Redefining Imported Subs: of scope and no

Let's try something new; how about manually deleting/redefining the subroutine in the symbol table?

use feature 'say'; undef &say; *say = \&not_say; say 'test'; sub not_say { print 'not saying'; }

Maybe I'm getting my namespaces all mixed up because that doesn't seem to redefine the sub at all.

The confounding thing is that this works:

use strict; use warnings; use 5.012; #Rule: sub names are entered into the symbol table. sub abc { print "abc\n"; } sub xyz { print "xyz\n"; } local *abc; #gets rid of 'redefined main::abc' warning' *abc = \&xyz; abc; --output:-- xyz

But this doesn't work:

use strict; use warnings; use 5.012; sub xyz { print "xyz\n"; } local *say; *say = \&xyz; say 'hello'; --output:-- hello

Nor does this:

use strict; use warnings; use 5.012; use subs qw( say ); #Supposedly overrides a built in my $verbose = 1; sub say { if ($verbose) { print shift, " world\n"; } } say 'hello'; --output:-- hello


Comment on Re: Redefining Imported Subs: of scope and no
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1017931]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (15)
As of 2015-07-07 14:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (89 votes), past polls