You seem to be assuming that Perl by default
* dies if an open fails. It doesn't (and be glad it doesn't). As one of the creators of Unix said "not being able to open a file is not exceptional". Hence, in C, and therefore also in Perl,
open doesn't die (nor throws an exception) if a file cannot be opened. Its return value tells you whether it succeeded or not.
*But you can install autodie.