Частичный перевод документа perl5100delta.
readdir() в системе Windows
Функция readdir() может возвращать "короткое имя" когда полное имя содержит символы, не принадлежащие кодовой таблице ANSI (ANSI codepage). Аналогично Cwd::cwd() может возвращать короткое имя директории, а glob() может возвращать короткие имена файлов и директорий. В файловой системе NTFS эти короткие имена всегда могут быть представлены в кодовой таблице ANSI. Это не будет верно для всех остальных драйверов файловых систем (file system drivers); например файловая система FAT хранит короткие имена в кодовой таблице OEM, так некоторые файлы на томах FAT остаются недоступными через ANSI API.
Кроме того, $^X, @INC, и $ENV{PATH} обрабатываются препроцессором при запуске, чтобы проверить все пути на валидность в кодовой таблице ANSI (если это возможно)
Функция Win32::GetLongPathName() теперь возвращает UTF-8 закодированное корректное имя файла вместо использования замены символов для того, чтобы подогнать имя к кодовой таблице ANSI. Новая функция Win32::GetLongPathName() может быть использована для преобразования полного имени файла в короткое, только если полное имя не пожет быть представлено в кодовой таблице ANSI.
Многие другие функции в модуле Win32
были усовершенствованы для
обработки UTF-8 закодированных аргументов. Более подробно об этом в
Win32.
Переопределение readpipe()
Встроенная функция readpipe() теперь может быть переопределена. Это позволяет
переопределить ее аналог - оператор qx//
(также известный, как оператор
``
). Кроме того, теперь по умолчанию исползуется $_
, если не
предоставлено никаких аргументов.(Rafael Garcia-Suarez)
Аргумент по умолчанию для readline()
Теперь readline() по умолчанию использует *ARGV
если ему не перадано
аргументов. (Rafael Garcia-Suarez)
Переменные класса 'state'
Введен новый класс переменных. Переменные состояния (state variables)
подобны лексическим переменным, но декларированные ключевым словом state
вместо my
. Они видны только в своей лексической области, но их значения
стойкие: в отличие от лексических переменных, они не становятся неопределенными
при выходе из их области видимости, но сохраняют свое прежнее значение.
(Rafael Garcia-Suarez, Nicholas Clark)
Для использования 'state' переменных, нужно предварительно объявить:
use feature 'state';
или используя ключ командной строки -E
.
Операторы тестирования стека
В качестве новой формы синтаксического сахара теперь доступны операторы
тестирования стека. Вы можете теперь писать f -w -x $file
в ряд,
что тоже самое -x $file && -w _ && -f _
. Подробнее в "-X" in perlfunc