require './test.pl';
}
-plan tests => 21;
+plan tests => 26;
#
# This file tries to test builtin override using CORE::GLOBAL
# Non-global readline() override
BEGIN { *Rgs::readline = sub (;*) { --$r }; }
-package Rgs;
-::is( <FH> , 13 );
-::is( <$fh> , 12 );
-::is( <$pad_fh> , 11 );
+{
+ package Rgs;
+ ::is( <FH> , 13 );
+ ::is( <$fh> , 12 );
+ ::is( <$pad_fh> , 11 );
+}
+
+# Global readpipe() override
+BEGIN { *CORE::GLOBAL::readpipe = sub ($) { "$_[0] " . --$r }; }
+is( `rm`, "rm 10", '``' );
+is( qx/cp/, "cp 9", 'qx' );
+
+# Non-global readpipe() override
+BEGIN { *Rgs::readpipe = sub ($) { ++$r . " $_[0]" }; }
+{
+ package Rgs;
+ ::is( `rm`, "10 rm", '``' );
+ ::is( qx/cp/, "11 cp", 'qx' );
+}
# Verify that the parsing of overriden keywords isn't messed up
# by the indirect object notation
warn OverridenWarn->foo();
}
BEGIN { *OverridenPop::pop = sub { ::is( $_[0][0], "ok" ) }; }
-package OverridenPop;
-sub foo { [ "ok" ] }
-pop( OverridenPop->foo() );
-pop OverridenPop->foo();
+{
+ package OverridenPop;
+ sub foo { [ "ok" ] }
+ pop( OverridenPop->foo() );
+ pop OverridenPop->foo();
+}
+
+{
+ eval {
+ local *CORE::GLOBAL::require = sub {
+ CORE::require($_[0]);
+ };
+ require 5;
+ require Text::ParseWords;
+ };
+ is $@, '';
+}