Как вы стилизуете отключенное текстовое поле в IE8?

Используйте require для загрузки модулей во время выполнения. Часто бывает полезно заключить это в блок (не в строку) eval, если модуль не может быть загружен.

eval {
    require My::Module;
    My::Module->import();
    1;
} or do {
   my $error = $@;
   # Module load failed. You could recover, try loading
   # an alternate module, die with $error...
   # whatever's appropriate
};

Причина синтаксиса eval {...} or do {...} и создания копии $@ заключается в том, что $@ - это глобальная переменная, которая может быть задана множеством разных вещей. Вы хотите получить значение как можно более атомарно, чтобы избежать состояния гонки, когда что-то еще установило его на другое значение.

Если вы не знаете имя модуля до времени выполнения, вам придется выполнить перевод между именем модуля (My :: Module) и именем файла (My / Module.pm) вручную:

my $module = 'My::Module';

eval {
    (my $file = $module) =~ s|::|/|g;
    require $file . '.pm';
    $module->import();
    1;
} or do {
    my $error = $@;
    # ...
};

16
задан Patrick 12 May 2015 в 19:25
поделиться