ein wenig OO macht es leicht die benötigte Funktionalität hinzuzufügen: HTML zu erzeugen, oder zu sortieren etc.
Hier ein kleines Beispiel noch ohne Templating und ohne Sortierung, aber mit einem vernünftigen Grundgerüst:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/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 = '<table class="customer">' . "\n"
. '<tr><th class="name">'
. $self->name
. '</th></tr>' . "\n";
$o .= '<tr><td class="attribute">'
. $_
. '</td></tr>'
. "\n" for @{$self->attributes};
$o .= '</table>' . "\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;