use warnings; use strict; sub escape_ents { local $_ = shift; s/&/&/g; s//>/g; s/"/"/g; # " s/'/'/g; return $_; } sub stringify_attribs { return join '', map{ ' '.escape_ents( $_ ).'="'.escape_ents( $_[0]{$_} ).'"' } sort keys %{$_[0]}; }