Al poner en mi código open(...) or die("No se pudo abrir el archivo < archivo.txt, $!"); simplemente se cierra si quito el archivo de la carpeta.
Y cuando solo pongo $! en die es lo mismo. También he intentado poner || en lugar de 'or', pero da igual.
No sé si esa sea la estructura correcta. Estoy usando ActivePerl 5.20.