El modificador -p es solo un acceso directo para ajustar su código (el argumento que sigue a -e) en este bucle:
LINE:
while (<>) {
... # your program goes here
} continue {
print or die "-p destination: $!\n";
}
(-n es igual pero sin el bloque continuar).
El <>
operador vacío es equivalente a readline *ARGV
, y eso abre cada argumento sucesivamente como un archivo para leer. No hay forma de influir en el manejo de errores de esa apertura implícita, pero puede hacer que la advertencia que emite sea fatal (tenga en cuenta que esto también afectará a varias advertencias relacionadas con el modificador -i):
perl -Mwarnings=FATAL,inplace -pe 1 foo && echo ok