Всё украдено до нас
Dec. 17th, 2009 02:09 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вчера сгоряча чуть было не написал программулину по рисованию дерева со структурой XML-файла. Даже, взяв напильник, слегка обточил какой-то старый скрипт разбора XML так, что он стал выдавать вместо текста вида
Сегодня, погуглив на свежую голову, нашёл, что на CPAN, конечно же, есть нужный модуль. Теперь нарисовать дерево можно совсем просто:

Если нужен другой формат готовой картинки, то помимо PNG, модулем поддерживаются и другие форматы, как растровые (GIF, JPEG), так и векторные (PostScript, SVG) — для этого предназначены методы с вполне предсказуемыми именами
Можно ещё попробовать указать нужные свойства графа прямо в скрипте. Но это уже совсем другая история.
исходный текст для GraphViz, из которого уже можно получать картинки.root : + first : : + one : + second + three
Сегодня, погуглив на свежую голову, нашёл, что на CPAN, конечно же, есть нужный модуль. Теперь нарисовать дерево можно совсем просто:
#!/usr/bin/perl -w
use GraphViz::XML;
use File::Slurp;
my $data = read_file shift @ARGV;
my $graph = GraphViz::XML->new($data);
print $graph->as_png;
Получается такая картинка:
Если нужен другой формат готовой картинки, то помимо PNG, модулем поддерживаются и другие форматы, как растровые (GIF, JPEG), так и векторные (PostScript, SVG) — для этого предназначены методы с вполне предсказуемыми именами
as_gif
, as_jpeg
, as_ps
, as_svg
и т. п. А если не устраивает внешний вид графа, можно получить исходный dot-файл — для этого существуют методы as_canon
и as_text
: второй, в отличие от первого, выдаёт ещё и координаты вершин. Можно ещё попробовать указать нужные свойства графа прямо в скрипте. Но это уже совсем другая история.