Ключ -p это просто ярлык для упаковки вашего кода (аргумент следующего -e) в этом цикле:
LINE:
while (<>) {
... # your program goes here
} continue {
print or die "-p destination: $!\n";
}
(-n то же самое, но без блока продолжения.)
<>
Пустой оператор эквивалентен readline *ARGV
, и который открывает каждый аргумент в последовательности в виде файла на чтение. Нет никакого способа повлиять на обработку ошибок этого неявного открытия, но вы можете сделать предупреждение, которое оно генерирует, фатальным (обратите внимание, это также повлияет на несколько предупреждений, связанных с ключом -i):
perl -Mwarnings=FATAL,inplace -pe 1 foo && echo ok