Приглашаем посетить
Кантемир (kantemir.lit-info.ru)

Генерация динамических выражений с помощью функции eval

Генерация динамических выражений с помощью функции eval

Поскольку Perl является интерпретируемым языком, ваши скрипты могут исполь­зовать Perl для того, чтобы генерировать код «на лету», то есть динамически, во время исполнения скрипта. Именно так работает отладчик Perl (который сам является Perl-программой с именем Perldb . PL ). Проектируя скрипты, вы можете использовать такой динамический код для создания динамических переменных имен или даже построения специальных подпрограмм.

Perl оценивает динамические выражения, используя функцию eval . В следующем примере создается динамическая инструкция путем присвоения переменной в ка­честве значения текста, который, собственно, и содержит требуемую инструкцию языка Perl . Дальнейшие инструкции используют функцию eval для того, чтобы выполнить эту инструкцию:

$perl_statement = ‘print “Hello, world\n”;’;

eval $perl_statement;                                    # выведет Hello, world

$i = 1001;

$varname = ‘$i’;

print eval $varname;                         # выведет значение $i

Примечание: Использование скриптом функции eval таит в себе опасно­сти, в особенности, если скрипт передает функции eval данные, получен­ные от пользователя. Используя функцию eval, скрипт может выполнить произвольную команду языка Perl , включая даже системные команды. Это дает возможность пользователю контролировать программу, что может быть особенно рискованным для сетей Internet и Web .

Назад | Оглавление | Далее