Web frameworks such as Rails and Django has built-in support for "slugs" which are used to generate readable and SEO-friendly URLs:
A slug string typically contains only of the characters a-z
, 0-9
and -
and can hence be written without URL-escaping (think "foo%20bar").
I'm looking for a Perl slug function that given any valid Unicode string will return a slug representation (a-z
, 0-9
and -
).
A super trivial slug function would be something along the lines of:
$input = lc($input),
$input =~ s/[^a-z0-9-]//g;
However, this implementation would not handle internationalization and accents (I want ë
to become e
). One way around this would be to enumerate all special cases, but that would not be very elegant. I'm looking for something more well thought out and general.
My question:
- What is the most general/practical way to generate Django/Rails type slugs in Perl? This is how I solved the same problem in Java.