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"; #