while(<>) { &parse($_); } sub parse { my $data = shift; chomp $data; my @data = split(/\s+/, $_); print "Head: $data[0] $data[1] $data[2] $data[3]\n"; shift @data; shift @data; shift @data; shift @data; while(scalar(@data)) { print " In : $data[0] $data[1]\n"; shift @data; shift @data; for(my $n = 0; $n < 4; $n++) { my $bits = ''; print " Data:"; for (my $i = 0; $i < 8; $i++) { shift @data; my $bit = shift @data; if(hex($bit) > 0x0030) { $bits .= '1'; } else { $bits .= '0'; } } print $bits, ' (', unpack('C', pack("b*", $bits)), ')'; print "\n"; } print " Out : $data[0] $data[1]\n"; shift @data; shift @data; } }