# Parse notes file { local $/ = "\n\n"; # Double-newline separates input records while (<>) { my $this_line = ""; # escape everything before @tags $this_line = HTML::Entities::encode("$1") . "$2" if /^([^@]*)(.*)/s; # url encode and html escape tags $this_line =~ s| \@( # capture to $1 [^\s@]+ # more flexible than \w+ )\b | push @{$lines{"$1"}}, \$this_line; # maybe rework following using URI my $oneEH = HTML::Entities::encode($1); my $oneE = CGI::escapeHTML(CGI::escape($1)); qq~$oneEH~; |gex; push @all_notes, $this_line; } }