sub WriteSpinData { my( $OUT_FH, $ref ) = @_; my( $last_major, $line, @cur_spin ); my( $row_length ) = 15*160+1; for my $filename ( sort keys %{ $ref } ) { for my $major ( sort keys %{ $ref->{$filename} } ) { for my $minor ( grep{/^\d+$/} keys %{ $ref->{$filename}{$major} } ){ @cur_spin = "$filename,$major,$minor" if $ref->{$filename}{$major}{$minor}[ 3 ] == 165 and ( $minor % 10 ) == 0; push @cur_spin, @{ $ref->{$filename}{$major}{$minor} }[ 3..17 ]; if( @cur_spin == ( $row_length + 15 ) ) { print $OUT_FH join( ',', @cur_spin ), "\n"; @cur_spin = (); } } $last_major = $major; } printf "%s: %d major frames\n", basename( $filename ), $last_major; } }