Используйте 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 = $@;
# ...
};
Другой вариант - добавить класс disabled
и стилизовать его:
input.disabled, textarea.disabled{
background:#EBEBE4;
}