#!/usr/bin/perl use strict; my $file_name = 'javascript-uris.txt'; my @item; { open my $file, '<', $file_name; local $/ = undef; @item = split /\n\n#/, <$file>; } sub htescape ($) { my $s = shift; $s =~ s/&/&/g; $s =~ s/ javascript: URIs

Tags: All

]; for (@item) { s/^#//; my %prop; for (split /\n#/, $_) { if (s/^([0-9A-Za-z-]+)(?>\n|\z)//s) { $prop{$1} = $_; } elsif (s/^([0-9A-Za-z-]+)\s+escaped(?>\n|\z)//s) { my $t = $1; s/&#x([0-9A-Fa-f]+);/chr hex $1/ge; $prop{$t} = $_; } } my $id = htescape (get_id ($prop{data})); my $euri = htescape ($prop{data}); print qq[

URI: <$euri>]; for (qw/note conforming non-conforming source/) { next unless defined $prop{$_}; print qq[

]; print qq[Conforming javascript: URI: ] if $_ eq 'conforming'; print qq[Non-conforming javascript: URI: ] if $_ eq 'non-conforming'; print qq[Source: ] if $_ eq 'source'; my $v = htescape ($prop{$_}); $v =~ s[<([^>]+)>][<$1>]g; print qq[] . $v . qq[]; } if (defined $prop{tags}) { my @tag = sort {$a cmp $b} split /\n/, $prop{tags}; print q[

Tags: ]; print join ', ', map {'' . htescape ($_) . ''} @tag; } print qq[

]; }