On Saturday 27 October 2007 11:39:26 Matisse Enzer wrote:
> What am i doing wrong:
>
>
> #############################################
> # test.pl
> use strict;
> use warnings;
> use Test::More tests => 2;
>
> my $test_string = 'overrode function';
>
> {
> no warnings qw(once);
> *CORE::GLOBAL::glob = sub {
> $test_string;
> };
>
> *CORE::GLOBAL::print = sub {
> $test_string;
> };
> }
>
> is( glob, $test_string, 'overrode glob' );
> is( print, $test_string, 'overrode print' );
>
> #############################################
>
> % perl test.pl
> 1..2
> Subroutine CORE::GLOBAL::glob redefined at test.pl line 11.
> ok 1 - overrode glob
> Use of uninitialized value in print at test.pl line 19.
> not ok 2 - overrode print
> # Failed test 'overrode print'
> # at test.pl line 19.
> # got: '1'
> # expected: 'overrode function'
> # Looks like you failed 1 test of 2.
I don't think you can override print.
my $p = prototype 'CORE::print';
print defined $p ? $p : 'unoverrideable';
-- c