Генерация динамических выражений с помощью функции 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.
1 2 3 4
8 8 8
| |