A opção -p é apenas um atalho para agrupar seu código (o argumento após -e) neste loop:
LINE:
while (<>) {
... # your program goes here
} continue {
print or die "-p destination: $!\n";
}
(-n é o mesmo, mas sem o bloco continuar.)
O <>
operador vazio é equivalente a readline *ARGV
, e isso abre cada argumento sucessivamente como um arquivo para leitura. Não há como influenciar o tratamento de erros dessa abertura implícita, mas você pode fazer com que o aviso seja fatal (observe, isso também afetará vários avisos relacionados à opção -i):
perl -Mwarnings=FATAL,inplace -pe 1 foo && echo ok