#!/usr/bin/perl -w use strict; &usage('requires 2 args, not '.scalar @ARGV) if (@ARGV != 2); &linkify($ARGV[0], $ARGV[1]); sub linkify { my ($termsFile, $grammarFile) = @_; open (G,'<', $grammarFile) || &usage("can't open grammar file \"$grammarFile\" for reading: $!"); my $grammar; { local $/ = undef; $grammar = ; close(G); $grammar =~ s/&/&/g; $grammar =~ s//>/g; } open (T,'<', $termsFile) || &usage("can't open terms file \"$termsFile\" for reading: $!"); foreach my $term () { chomp $term; $grammar =~ s/(?$term<\/a>/g; $grammar =~ s/(?$term<\/a>:/g; } close(T); my @lines = split("\n", $grammar); my $line_no = 1; foreach my $line (@lines) { print "$line\n"; $line_no++; } } sub usage { my ($msg) = @_; die "$msg\nUSAGE: $0 terms grammar\n"; }