O problema que você está descrevendo é o comportamento padrão nos sistemas em que eu testei. I
e O
afetam stdin e stdout, então isso deve funcionar:
→ cat data | perl -CIO -pe 's/.*(..)$/$1/'
ρε
小红
Considerando que isso pode não acontecer:
→ perl -CIO -pe 's/.*(..)$/$1/' data
ε
º¢
Existem mais duas opções para perl -C
que produzem seu comportamento desejado.
i 8 UTF-8 is the default PerlIO layer for input streams
o 16 UTF-8 is the default PerlIO layer for output streams
Que é basicamente dizendo para perl, use um formulário aberto de arquivo:
open(F, "<:utf8", "data");
ou você pode usar perl -CSD
, que é uma abreviação de perl -CIOEio
S 7 I + O + E
D 24 i + o
Então você começa
→ perl -CSD -pe 's/.*(..)$/$1/' data
ρε
小红
Se a variável de ambiente PERLIO
estiver definida e incluir :utf8
, esse comportamento também será ativado.
Parece que o comportamento padrão para perl
não é modificável no momento da configuração / compilação (comentário cuonglm abaixo). Arch certamente não definir qualquer coisa. Eu duvido debian perl pacotes modificaria o comportamento padrão.