Let's try something new; how about manually deleting/redefining the subroutine in the symbol table?
use feature 'say';
undef &say;
*say = \¬_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
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Outside of code tags, you may need to use entities for some characters:
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|