Test specifically for things that cop_features broke __END__ # NAME check clearing $^H clears the bits use feature 'say'; BEGIN { %^H = () } say "Fail"; EXPECT String found where operator expected at - line 3, near "say "Fail"" (Do you need to predeclare say?) syntax error at - line 3, near "say "Fail"" Execution of - aborted due to compilation errors. ######## # NAME check copying $^H restores the bits use feature 'say'; say "Hello"; BEGIN { our %work = %^H; } no feature 'say'; BEGIN { %^H = our %work } say "Goodbye"; EXPECT Hello Goodbye ######## # NAME check deleting entries (via feature.pm) clears the bits use feature 'say'; say "Hello"; no feature 'say'; say "Goodbye"; EXPECT String found where operator expected at - line 4, near "say "Goodbye"" (Do you need to predeclare say?) syntax error at - line 4, near "say "Goodbye"" Execution of - aborted due to compilation errors. ######## # NAME check deleting entries (bypass feature.pm) clears the bits use feature 'say'; say "Hello"; BEGIN { delete $^H{feature_say}; } say "Goodbye"; EXPECT String found where operator expected at - line 4, near "say "Goodbye"" (Do you need to predeclare say?) syntax error at - line 4, near "say "Goodbye"" Execution of - aborted due to compilation errors.