#!/usr/bin/perl use strict; use warnings; use 5.006; $|++; require Text::CSV; ## for writing a proper CSV file ## get arguments from the commandline my( $infile, $outfile )= @_; ## set the template for unpacking the database ## see 'perldoc -f pack' for details my $template= 'A30A30A40'; ## verify arguments or display usage 2 == @ARGV or die "usage: db2csv infile outfile\n"; ## open the files, $infile for reading, $outfile for writing ## see 'perldoc perlopentut' for details open local(*IN) => '<', $infile or die 'infile:', $!; open local(*OUT) => '>', $outfile or die 'outfile:', $!; ## create a CSV object my $csv= Text::CSV->new(); ## set the input record seperator to 100 bytes ## see 'perldoc perlvar' for details local $/= \100; ## process infile a line at a time while( ) { ## unpack the database record ## and create a csv record $csv->combine( unpack $template => $_ ) or die "cannot create record $.:", $csv->error_input() || $!; ## print the string to the output file print OUT $csv->string(), "\n"; } __END__ sample input: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffff sample output: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB","CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" "dddddddddddddddddddddddddddddd","eeeeeeeeeeeeeeeeeeeeeeeeeeeeee","ffffffffffffffffffffffffffffffffffffffff"