#/** # ******************************************************************************* # * Copyright (C) 2001-2004, International Business Machines Corporation and * # * others. All Rights Reserved. * # ******************************************************************************* # */ @rem = '--*-Perl-*-- @echo off if "%OS%" == "Windows_NT" goto WinNT perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9 goto endofperl :WinNT perl -x -S "%0" %* if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl if %errorlevel% == 9009 echo You do not have Perl in your PATH. goto endofperl @rem '; #!perl #line 14 # Usage: perl varsub.bat [-n|-nr] # # Substitutes variables into rules and deletes variable definition # statements. Variables that expand to UnicodeSets are NOT # substituted. # # -n Afterwards, run native2ascii -encoding UTF8 # -nr Afterwards, run native2ascii -encoding UTF8 -reverse $N2A = 0; $IN = shift; if ($IN =~ /^-n/) { $N2A = 1; $N2Aoption = ($IN eq '-nr') ? " -reverse " : ""; $IN = shift; } $OUT = shift; if (!($IN && $OUT)) { die "Usage: $0 [-n|-nr] "; } open(IN) or die "Can't open $IN: $!"; open(OUT, ">$OUT") or die "Can't open $OUT: $!"; while () { if (/^\s*\$([a-zA-Z0-9_]+)\s*=\s*([^;\#]+)\s*;\s*(\#.*)?$/) { # This looks like a variable definition my ($var, $def) = ($1, $2); # Don't substitute UnicodeSet vars if ($def !~ /^\[/) { if (exists $VAR{$var}) { print STDERR "Error: Duplicate definition of $var\n"; } else { $VAR{$var} = $def; } next; } } # Do variable substitutions, and output line foreach my $var (keys %VAR) { my $def = $VAR{$var}; s/\$$var\b/$def/g; } print OUT; } close(OUT); close(IN); if ($N2A) { `native2ascii -encoding UTF8 $N2Aoption $OUT $OUT.native2ascii`; unlink $OUT; rename "$OUT.native2ascii", $OUT; } __END__ :endofperl