Sounds like you need to:
- invent a time machine
- travel back a week and a bit
- go to my talk on unit testing at the London Perl Workshop
and then mock function y. If all you want to do is generate a die() when you call it, then simply manipulating the symbol table as others have suggested would probably be sufficient, or you might want to use
Test::MockObject. If you want to be a bit more rigourous, so that as well as testing that your code behaves correctly when 'y' dies but also test that you call y correctly, I recommend
Class::Mockable and
Class::Mock::Generic::InterfaceTester.