CiteProc is a common approach. A beneficial aspect of using CiteProc is that you can use any of thousands of citation styles: https://github.com/citation-style-language/styles
A bunch of open source projects already use CSL/CiteProc: http://citationstyles.org/
There is a JS library, but no Perl library (yet): http://citationstyles.org/developers/
Here is some information about how LBCC uses CiteProc in its discovery layer: http://sandbergja.github.io/systems/2015/11/24/findit-bibtex
Eprints displays citations prominently, and is also written in Perl. It might be worthwhile to learn more about Eprints does citations.
Here's an example of the Eprints interface including citations: https://eprints.qut.edu.au/104121/
In fact, the browse and search interfaces use citations as the search result display: https://eprints.qut.edu.au/view/subjects/080799.html