#!/usr/bin/perl use strict; use warnings; package Customer; use Moose; has 'name' => ( is => 'rw' ); has 'attributes' => ( is => 'rw', isa => 'ArrayRef' ); sub to_html_table { my $self = shift; my $o = '' . "\n" . '' . "\n"; $o .= '' . "\n" for @{$self->attributes}; $o .= '
' . $self->name . '
' . $_ . '
' . "\n" . "\n"; return $o; } package CustomerRecord; use Moose; has 'customers' => ( is => 'rw', isa => 'ArrayRef' ); sub add_customer { my $self = shift; push @{$self->{'customers'}}, shift @_ if @_; } sub to_html { my $self = shift; my $o; $o .= $_->to_html_table for @{$self->{'customers'}}; return $o; } package main; use YAML; use Data::Dumper; my $ref = [Load(<<'...')]; --- Kundenname: Meyer Datensatz: - DatensatzA 1 - DatensatzA 2 - DatensatzA 3 - DatensatzA 4 - DatensatzA 5 - DatensatzA 6 --- Kundenname: Müller Datensatz: - DatensatzB 1 - DatensatzB 2 - DatensatzB 3 --- Kundenname: Schulze Datensatz: - DatensatzC 1 - DatensatzC 2 - DatensatzC 3 - DatensatzC 4 - DatensatzC 5 - DatensatzC 6 - DatensatzC 7; ... #print Dumper($ref); my $record = CustomerRecord->new; $record->add_customer( Customer->new( name => $_->{'Kundenname'}, attributes => $_->{'Datensatz'} ) ) for @$ref; print $record->to_html;