Find embedded hex chars in a file.
# This program uses an implied read <> and eof; it works in binary mo
+de...to detect hex embedded chars
# opens .dat files in dir where pgm resides.
#
print "start program findhex\n";
$cnt = 0;
$trcnt = 0;
$mynul = 0;
$mysoh = 0;
$mystx = 0;
$myetx = 0;
$myeot = 0;
$myenq = 0;
$myack = 0;
$mybel = 0;
$mybs = 0;
$myht = 0;
$myso = 0;
$mysi = 0;
$mydle = 0;
$mydc1 = 0;
$mydc2 = 0;
$mydc3 = 0;
$mydc4 = 0;
$mynak = 0;
$mysyn = 0;
$myetb = 0;
$mycan = 0;
$myem = 0;
$mysub = 0;
$myesc = 0;
$myfs = 0;
$mygs = 0;
$myrs = 0;
$myus = 0;
$mydel = 0;
$myvt = 0;
$ofilename = ("> findhex.wrk");
open (OFILE, $ofilename);
while (defined ($filename = glob("*\.dat")) )
{
print "input file is $filename\n";
open (TEMPBIG, $filename) || warn "open $filename: $!";
binmode TEMPBIG;
+ #process in binary for special hex
while (<TEMPBIG>)
{
$mynul = $mynul + (tr/\x00/\x20/);
$mysoh = $mysoh + (tr/\x01/\x20/);
$mystx = $mystx + (tr/\x02/\x20/);
$myetx = $myetx + (tr/\x03/\x20/);
$myeot = $myeot + (tr/\x04/\x20/);
$myenq = $myenq + (tr/\x05/\x20/);
$myack = $myack + (tr/\x06/\x20/);
$mybel = $mybel + (tr/\x07/\x20/);
$mybs = $mybs + (tr/\x08/\x20/);
$myht = $myht + (tr/\x09/\x20/);
$myso = $myso + (tr/\x0E/\x20/);
$mysi = $mysi + (tr/\x0F/\x20/);
$mydle = $mydle + (tr/\x10/\x20/);
$mydc1 = $mydc1 + (tr/\x11/\x20/);
$mydc2 = $mydc2 + (tr/\x12/\x20/);
$mydc3 = $mydc3 + (tr/\x13/\x20/);
$mydc4 = $mydc4 + (tr/\x14/\x20/);
$mynak = $mynak + (tr/\x15/\x20/);
$mysyn = $mysyn + (tr/\x16/\x20/);
$myetb = $myetb + (tr/\x17/\x20/);
$mycan = $mycan + (tr/\x18/\x20/);
$myem = $myem + (tr/\x19/\x20/);
$mysub = $mysub + (tr/\x1A/\x20/);
$myesc = $myesc + (tr/\x1B/\x20/);
$myfs = $myfs + (tr/\x1C/\x20/);
$mygs = $mygs + (tr/\x1D/\x20/);
$myrs = $myrs + (tr/\x1E/\x20/);
$myus = $myus + (tr/\x1F/\x20/);
$mydel = $mydel + (tr/\x7F/\x20/);
$myvt = $myvt + (tr/\x0B/\x20/);
print OFILE "$_";
$cnt++;
}
$trcnt = $mynul + $mysoh + $mystx + $myetx + $myeot + $myenq + $my
+ack + $mybel + $mybs +
$myht + $myso + $mysi + $mydle + $mydc1 + $mydc2 + $my
+dc3 + $mydc4 + $mynak +
$mysyn + $myetb + $mycan + $myem + $mysub + $myesc + $my
+fs + $mygs + $myrs +
$myus + $mydel + $myvt;
close (TEMPBIG);
print "total replacement nul : $mynul \n";
print "total replacement soh : $mysoh \n";
print "total replacement stx : $mystx \n";
print "total replacement etx : $myetx \n";
print "total replacement eot : $myeot \n";
print "total replacement enq : $myenq \n";
print "total replacement ack : $myack \n";
print "total replacement bel : $mybel \n";
print "total replacement bs : $mybs \n";
print "total replacement ht : $myht \n";
print "total replacement so : $myso \n";
print "total replacement si : $mysi \n";
print "total replacement dle : $mydle \n";
print "total replacement dc1 : $mydc1 \n";
print "total replacement dc2 : $mydc2 \n";
print "total replacement dc3 : $mydc3 \n";
print "total replacement dc4 : $mydc4 \n";
print "total replacement nak : $mynak \n";
print "total replacement syn : $mysyn \n";
print "total replacement etb : $myetb \n";
print "total replacement can : $mycan \n";
print "total replacement em : $myem \n";
print "total replacement sub : $mysub \n";
print "total replacement esc : $myesc \n";
print "total replacement fs : $myfs \n";
print "total replacement gs : $mygs \n";
print "total replacement rs : $myrs \n";
print "total replacement us : $myus \n";
print "total replacement del : $mydel \n";
print "total replacement vt : $myvt \n\n";
print "total replacement count: $trcnt\n";
print "total records read: $cnt \n\n";
}
close (OFILE);
print "end of program FindHex\n";
#