1 map http://www.digitalcity.com http://origin-www.digitalcity.com
2 map tunnel://www.digitalcity.com tunnel://origin-www.digitalcity.com
3 map http://10.0.2.1 http://origin-www.digitalcity.com
4 map tunnel://10.0.2.1 tunnel://origin-www.digitalcity.com
5 reverse_map http://origin-www.digitalcity.com http://www.digitalcity.com
6 reverse_map tunnel://origin-www.digitalcity.com tunnel://www.digitalcity.com
####
# pseudo-code
open ASCII text file
read in entire file, line by line into an array
ignore comments
foreach line matching regex,
push each subexpression into a hash
populate template
if the completed template is seen in the file, we're ok,
if not, die, and take action.
####
#!/usr/bin/perl -w
use strict;
use Text::Template;
my $OUT;
my $line;
my %vars;
my $lines;
my @lines;
my $file = "/home/trixee/remap.tmpl";
my $template = new Text::Template (TYPE => 'FILE' , SOURCE => $file)
or die "Couldn't construct template: $Text::Template::ERROR";
while (@lines = ) {
foreach $lines (@lines) {
chomp $lines;
next if ($lines =~ /^\#/);
if ($lines =~ /(\d+)(\s+)map(\s+)(\w+)\:\/\/(.*?)(\s+)(\4)\:\/\/(.*?)/) {
$vars{'lines'} = [];
push @{ $vars{'lines'} },
{'proto' => $4,
'uri1' => $6,
'uri2' => $8,
'd' => $1};
}
}
}
foreach $line (@lines) {
$OUT .= "line = $line->{'d'} map $line->{'proto'}://$line->{'uri1'} $line->{'proto'}://$line->{'uri2'}\n";
}
__DATA__
# I am a comment;
1 map http://www.digitalcity.com http://origin-www.digitalcity.com
2 map tunnel://www.digitalcity.com tunnel://origin-www.digitalcity.com
3 map http://10.0.2.1 http://origin-www.digitalcity.com
4 map tunnel://10.0.2.1 tunnel://origin-www.digitalcity.com
5 reverse_map http://origin-www.digitalcity.com http://www.digitalcity.com
6 reverse_map tunnel://origin-www.digitalcity.com tunnel://www.digitalcity.com
+++++++++++++++++++++++++++++++++++++++++++++
TEMPLATE:
{$d} map {$proto}://{$uri1} {$proto}://{$uri2}
{$d} map {$proto}://{$uri1} {$proto}://{$uri2}
{$d} map {$proto}://{$uri1} {$proto}://{$uri2}
{$d} map {$proto}://{$uri1} {$proto}://{$uri2}
{$d} reverse_map {$proto}://{$uri2}://{$proto}://{$uri1}
{$d} reverse_map {$proto}://{$uri2} {$proto}://{$uri1}