perl: здесь документы внутри оператора backtick
Учитывая программу utility, которая принимает команды из stdin и возвращает полезный код выхода, этот синтаксис perl работает:
my $result = `utility -switch1 -switch2 <<HERE
set ridin_round_the_world TRUE;
do this;
sign that;
try {
make some_girl;
return 0;
}
except {
sleep --week;
exit 1;
}
HERE`;
print "result is $resultn";
Под "работает" я подразумеваю, что скрипт perl запускает утилиту, помещает ее в список команд, ждет, пока утилита завершит работу, и возвращает результат.
Но почему это работает? Как backtick знает, что нужно вызвать программу, а затем передать ее в документ HERE? Мне просто повезло с моей реализацией perl, или это стандартное поведение?