By Alvin Alexander. Last updated: June 13, 2018
Here’s the complete source code for a Perl program I wrote a long time ago that reads a pipe-delimited data file that contains a list of URLs, and prints its output as an HTML list, using UL, LI, and anchor tags:
#!/usr/bin/perl
# purpose: generate a list of href hyperlinks from a pipe-delimited database.
# this program reads from an input file, and writes to standard out (stdout).
#
# usage: perl this_program input_file_name > output_file_name
# the first argument is the filename we read from
$file = $ARGV[0];
open(FILE,$file) or die "Could not read from $file, program halting. $!";
# print the opening UL tag
print "<ul>\n";
# loop through the input file
while (<FILE>)
{
# work with the current record
chomp;
($title,$url,$desc,$rest) = split(/\|/, $_);
$desc =~ tr/"//d;
$desc =~ tr/'//d;
# print the LI and HREF tags for the current row of data
print "<li><a class=\"recent_link\" title=\"$desc\" href=\"$url\">$title</a></li>\n";
}
# print the closing UL tag
print "</ul>\n";
close(FILE);
The most important things to know about this Perl script are:
- The input filename is provided by the Unix shell script that calls this Perl script. That is, the input filename is passed in as a command-line parameter.
- The data file contains at least four pipe-delimited fields. In fact, it has many more than this, but I’m only interested in the the three fields I’ve named
$title,$url, and$desc. - The program prints its output to standard output (STDOUT) with
printstatements.
Sample output
Output from this script looks like this:
<ul> <li><a class="recent_link" title="The fossil, nicknamed Ida ..." href="http://news.bbc.co.uk/2/hi/science/nature/8057465.stm">47 million year old fossil unveiled</a></li> <li><a class="recent_link" title="The Palm Pre will go on sale on 6 June ..." href="http://news.bbc.co.uk/2/hi/technology/8057425.stm">Palm announces Pre launch dates</a></li> <li><a class="recent_link" title="Info on the Sherlock Holmes movie." href="http://sherlock-holmes-trailer.blogspot.com/">Sherlock Holmes movie info</a></li> </ul>
There are certainly much fancier ways of generating HTML output, but this works for me. :)

