Текст Can't open ...
является предупреждением. Вы можете перехватить это, используя обработчик сигнала $SIG{__WARN__}
.
Поскольку вы должны получать только предупреждения от неявного оператора <>
в цикле, предоставляемого переключателем -p
, вы можете переписать свой код следующим образом:
perl -i -pe 'BEGIN { $exit = 0; $SIG{__WARN__} = sub { $exit = 1; warn @_} } END { $? = $exit}' aaa.txt; echo $?
Это устанавливает$exit
в 0 в начале скрипта и устанавливает его в 1, если есть предупреждение. Блок END
присваивает значение $exit
$?
, которое будет кодом завершения скрипта после его завершения.