Поскольку параметры командной строки в #!
"shebang" не передаются согласованно во всех операционных системах (см. этот ответ ), и Perl уже открыл потоки перед синтаксическим анализом сценария shebang, и поэтомуне может компенсировать это в некоторых старых ОС, было решено в ошибка 34087 запретить -C
в шебанге.Конечно, не все были довольны этим «исправлением», особенно если бы оно работало на их ОС, и они не хотят думать ни о чем другом, кроме UTF-8.
Если вы думаете binmode()
уродлив и ненужен (и не охватывает аргументы командной строки), вы можете рассмотреть пакет utf8::all
, который имеет эффект, аналогичный perl -CSDL
.
Или если бы вы использовали * nix, я бы предложил export PERL_UNICODE="SDA"
во включающем скрипте, чтобы Perl понял, что он находится в среде UTF-8.