Вы делаете разные вещи. Поэтому неудивительно, что вы получаете разные результаты.
В первом примере вы берете значение $_
, передаете его в uc
и распечатываете результаты (это версия исходного текста в верхнем регистре).
Во втором примере вы берете значение $_
, передаете его в uc
и печатаете значение в $_
. Но вы ничего не сделали для обновления $_
, так что вы получите неизмененное значение. Исправление (как вы уже отметили в комментарии) заключается в обновлении $_
значением, которое возвращает uc
.
perl -pe '$_ = uc' /etc/passwd