<(common.inc.plp)><: use warnings; no warnings 'qw'; my $intro = 'dieren die in het Nederlands vernoemd zijn naar andere dieren.'; my %subpages = ( standaard => { title => 'dieren', intro => $intro, altlink => 'Zie ook verdergezochte verbanden' . ' of het beknopte overzicht.', prefix => qr/^(?!#)\+?/, # no # optional + colfilter => 0, }, uitgebreid => { title => 'uitgebreid dieren', intro => "$intro.. en dergelijke.", altlink => 'Zie het populaire overzicht voor minder.', prefix => qr/.*?[#]|^[#+]*/, # after optional # or + secrets => 1, }, beknopt => { title => 'beknopt dieren', intro => "een aantal $intro", altlink => 'Zie het populaire overzicht voor meer.', prefix => qr/^\+/, # only + colfilter => 1, }, ); $Request ||= 'standaard'; my $pageinfo = $subpages{$Request} or Html(), Abort("Onbekende dierenpagina $Request", '404 request not found'); Html({ title => $pageinfo->{title}.' cheat sheet', version => '1.2', lang => 'nl', description => "Tabeloverzicht met afbeeldingen van $pageinfo->{intro}", keywords => [qw' dier beest naam naamgeving woord taal nederlands gerelateerd relatie vernoemd vernoeming combinatie samenstelling voorvoegsel onverwant land zee lucht animals dutch language '], image => 'dieren.jpg', raw => <<"EOT", EOT }); :>

Dierennamen (Dutch animal names)

<: say ucfirst $pageinfo->{intro}; say $pageinfo->{altlink}; :>

<: my $table = Data('dieren'); if (exists $get{r}) { use List::MoreUtils qw( part ); my @trans = (part { state $col; /^#?>/ ? ($col = 0) : ++$col } @{$table}); $table = []; for (@trans) { unshift @$_, '?:' if $_->[0] !~ /:$/; $_->[0] =~ s/^#?\K>?/>>/; for (@$_) { push @$table, s/^#?\K>/$1/r; } } } for my $prefix ($pageinfo->{prefix}) { for my $col ($pageinfo->{colfilter} // ()) { @{$table} = grep { $_->[$col] =~ $prefix } @{$table}; } $_ = [ grep { s/$prefix// } @{$_} ] for @{$table}; } say ''; for my $row (@{$table}) { print ''; for my $name (@{$row}) { my $hidden = $name =~ s/^\?//; $name =~ s/#.*//; # ignore prefixed part $name =~ s/^-$//; my ($img) = $name =~ /([\w-]+)/; $name =~ y/_/ /; if ($name =~ s/:$//) { # trailing colon indicates header text print ""; next; } print ''; } say ''; } say '';