#!/usr/bin/env perl

# sub A A-new B B-new
# sub -e

# -w  word
# -e  environment
# -d  debug
# -q%% quote

while ($ARGV[0] =~ /^-(.)(.*)/) {
	$opt{$1} = $2;
	shift @ARGV;
}

if (exists $opt{e}) {
	unshift @ARGV, %ENV;
}
($q0,$q1) = split //, $opt{q};
while (my ($k, $v) = splice(@ARGV, 0, 2)) {
	$k = "$q0$k$q1";
	$map{$k} = $v;
}

$rx = '';
for $k (keys %map) {
	$x = quotemeta($k);
	$x = "\\b$x\\b" if exists $opt{w};
	$rx .= '|' if $rx;
	$rx .= $x;
}
$rx = qr{$rx};
warn "$rx\n" if exists $opt{d};

while (defined ($_ = <STDIN>)) {
	s/($rx)/$map{$1}/ge;
	print;
}
