Чтобы тщательно выборочно процитировать текущий S02 проектный документ:
Больше нет никакого специального потока данных - любой блок Pod в текущем файле может быть доступен черезPod-объект ...
Вы должны разбить содержимое [Pod-блока] на строки самостоятельно.
[Speculartive] Также возможно обрабатывать объект-Pod как IO :: Handle,читать информацию о модуле построчно (как дескриптор файла DATA в Perl 5, но для любого блока Pod).
Таким образом, вместо одного раздела DATA файл, к которому вы обращаетесь, читая дескриптор файла, вы определяете любое количество блоков Pod в вашем файле скрипта;они хранятся в переменной $=pod
во время компиляции;вы читаете из этой переменной;и те, что называются «data», являются эквивалентами Perl 5 DATA .
. Это работает сегодня.Я покажу это через мгновение.Но сначала мне нужно поговорить о вещах, которые сегодня не работают.
Цитата выше была очень избирательной.Подчеркнутый текст говорит о том, что P6 автоматически создает переменную с именем вида $=foo
, соответствующим блокам Pod с именем 'foo'.Это общая, до сих пор не реализованная особенность блоков Pod, а не просто блоков данных.
Раздел «блоки данных» в документации Pod посвящен S26 , в котором говорится о том, что блоки данных делают более причудливые вещи, чем простостарые блоки под.Это еще не реализовано.
Итак, теперь давайте перейдем к тому, что можно сделать сегодня:
=foo This is a Pod block. A single line one. This Pod block's name is 'foo'.
=begin qux
This is another syntax for defining a Pod block.
It allows for multi line content.
This block's name is 'qux'.
=end qux
=data A data block -- a Pod block with the name 'data'.
# Data blocks are P6's version of P5's __DATA__.
# But you can have multiple data blocks:
=begin data
Another data block.
This time a multi line one.
=end data
$=pod.grep(*.name eq 'data').map(*.contents[0].contents.say);
Это печатает:
A data block -- a Pod block with the name 'data'.
Another data block. This time a multi line one.
Итак,это работает.Но ему явно нужно гораздо больше сахара.
Кстати, если последняя строка стиля FP не имеет смысла, вот императивный эквивалент:
for @$=pod {
if .name eq 'data' {
say .contents[0].contents
}
};