Это шаблон, который может применяться в других случаях - но обычно вы не хотите проверять строковое значение $!
, потому что оно зависит от системных библиотек, языкового стандарта пользователя и тому подобного.При работе с системными ошибками лучше всего работать с самими номерами ошибок, и у perl есть способ сделать это - вкратце, вы можете выполнить проверку, например if ($!{EAGAIN}) { ... }
(это поиск в хэше %!
) иЗначение будет истинным, только если для $!
установлено значение ошибки EAGAIN
.Чтобы быть совместимым со старыми Perl, вам нужно загрузить модуль Errno - кажется, он работает "из коробки" на 5.8 и новее, но только загрузка этого модуля гарантирует его работоспособность везде.
Конечно, существуют даже некоторые числовые биты, даже в числовых числах ошибок, поскольку каждая платформа не может иметь определенные номера ошибок.Вы можете проверить, есть ли у данного имени (например, EAGAIN
) номер ошибки в текущей системе, посмотрев, есть ли этот ключ exists
в %!
, и затем выяснить, куда идти дальше - но это все ещенадежнее сравнения строк.