Hi Monks, I have a file that is mixed with ascii text and binary. The binary part of the file is delimited by "Binary:\n". Then there is binary data that must be read 64 bits at a time. The binary data is too large to be split into a separate file or copy, so I would like to do this in one swoop. The following code does not work, it appears as if I cannot switch to binmode once I encounter the binary section of the file? Again, pretend that the binary portion is large so this needs to be done efficiently. Thanks in advance!
#!/usr/local/bin/perl use strict; use warnings; my $raw_file="spectrebin.raw"; open (FILE,$raw_file); foreach my $line (<FILE>) { if ($line=~/^Binary:/) { #Switch to binary mode #NOTE: If you comment this line in, # it works but starts reading the file from the # start, which I do not want. I want it to # read only the binary portion #open (FILE,$raw_file); binmode(FILE) or die "ERROR> Could not read binary file"; my $buffer; while ((read (FILE, $buffer, 64))!=0) { my $binary = unpack("B64",$buffer); printf "Binary: $binary\n"; } #Do not read the binary part as ascii last; } else { #the ascii part printf "ASCII: $line"; } }
In reply to Mixed text and binary file by ahoriuch
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |