1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
die "usage: macro.pl <control-file>" if (@ARGV < 1); ($control_file) = @ARGV; open(CONTROL, "< $control_file") or die "cannot open $control_file"; %Parms = (); while (<CONTROL>) { chomp; if (/^!define\s+(\w+)\s+['"]?(.+?)['"]?\s*$/) { $Parms{$1} = $2 } } while (<STDIN>) { s{ @@ \s* ( \w+ ) \s* @@ }{ $Parms{$1} }xge; print; }