#!/usr/bin/perl -w use strict; use Data::Dumper; my $verbose = (@ARGV && $ARGV[0] eq '-v' && shift); if(@ARGV){ $^I = ".orig"; }else{ warn "$0: Reading from stdin\n" if -t STDIN; } my $code = "while (<>){\n"; while (){ chomp; my ($in,$out) = split /\s*=>\s*/; next unless $in && $out; $code .= "s{\\Q$in\\E}{$out}g"; $code .= "&& printf STDERR qq($in => $out at \$ARGV line \$.\\n)" if $verbose; $code .= ";\n"; } $code .= "print;\n}\n"; eval "{ $code } 1" ||die; __END__ analysed => analyzed