sysread( FCS, my $data, $eData - $sData ) or die $!;
####
my %text = split $delim, $text;
####
my %text = split quotemeta( $delim ), $text;
####
if( $text{ '$DATATYPE' } eq 'I' and defined $text{ '$P1R' } ) {
my $mask = $text{ '$P1R' } - 1;
$_ &= $mask for @data;
}
####
my $par = $text{ '$PAR' };
for( my $i = 0; $i < @data; $i += $par ) {
print join ' ', @data[ $i .. $i + $par - 1 ];
}
####
my %tmpls = (
'1,2,3,4' => {
I => { 16 => 'v*', 32 => 'V*' },
F => { 32 => 'f<*' },
D => { 64 => 'd<*' },
},
'4,3,2,1' => {
I => { 16 => 'n*', 32 => 'N*' },
F => { 32 => 'f>*' },
D => { 64 => 'd>*' },
},
);
####
my $tmpl = $tmpls{ $text{ '$BYTEORD' } }
{ $text{ '$DATATYPE' } }
{ $text{ '$P1B' } };
####
#! perl -slw
use strict;
use Data::Dump qw[ pp ];
my %tmpls = (
'1,2,3,4' => {
I => { 16 => 'v*', 32 => 'V*' },
F => { 32 => 'f<*' },
D => { 64 => 'd<*' },
},
'4,3,2,1' => {
I => { 16 => 'n*', 32 => 'N*' },
F => { 32 => 'f>*' },
D => { 64 => 'd>*' },
},
);
open FCS, '<:raw',
'c:\downloaded\FCSExtract-TestData\FloatData4031.fcs'
# 'c:\downloaded\FCSExtract-TestData\CC4_067_BM.fcs'
or die $!;
sysread( FCS, my $header, 58 ) or die $!;
my( $id,
$sText, $eText,
$sData, $eData,
$sAnalysis, $eAnalysis
) = unpack 'A6 x4 (A8)6', $header;
sysseek FCS, $sText, 0 or die $!;
sysread( FCS, my $text, $eText - $sText ) or die $!;
my $delim = substr $text, 0, 1, '';
my %text = split quotemeta( $delim ), $text;
pp \%text; <>;
sysseek FCS, $sData, 0 or die $!;
sysread( FCS, my $data, $eData - $sData +1 ) or die $!;
my $tmpl = $tmpls{ $text{ '$BYTEORD' } }{ $text{ '$DATATYPE' } }{ $text{ '$P1B' } };
die 'Can\'t handle format' unless $tmpl;
my @data = unpack $tmpl, $data;
if( $text{ '$DATATYPE' } eq 'I' and defined $text{ '$P1R' } ) {
my $mask = $text{ '$P1R' } - 1;
$_ &= $mask for @data;
}
my $par = $text{ '$PAR' };
for( my $i = 0; $i < @data; $i += $par ) {
print join ' ', @data[ $i .. $i + $par - 1 ];
}