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
print
statements.
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. :)