Пропущенные разрешения при запуске через ExecStart

Проблема, которую вы описываете, представляет собой стандартное поведение в системах, на которых я тестировал. I и O влияют на stdin и stdout, поэтому это должно работать:

→ cat data | perl -CIO -pe 's/.*(..)$/$1/'
ρε
小红

В то время как это может не работать:

→ perl -CIO -pe 's/.*(..)$/$1/' data
ε
º¢

Есть еще два варианта для perl - C , которые производят желаемое поведение.

i     8   UTF-8 is the default PerlIO layer for input streams
o    16   UTF-8 is the default PerlIO layer for output streams

Что в основном говорит perl: используйте открытую форму файла:

open(F, "<:utf8", "data");

или вы можете использовать perl -CSD , что является сокращением для perl -CIOEio

S     7   I + O + E
D    24   i + o

Тогда вы получите

→ perl -CSD -pe 's/.*(..)$/$1/' data
ρε
小红

] Если переменная среды PERLIO установлена ​​и включает : utf8 , это поведение также будет включено.

Похоже, что поведение по умолчанию для perl также нельзя изменить во время настройки / компиляции (комментарий cuonglm ниже). Arch определенно ничего не устанавливает . Я сомневаюсь, что пакеты debian perl изменят поведение по умолчанию.

3
05.01.2018, 20:50
0 ответов

Теги

Похожие вопросы