#!/usr/bin/perl use strict; my $i=0; my $return="\n"; ( @ARGV == 1 and -d $ARGV[0] ) or die "Usage: $0 dir_name > out.csv\n"; my $dirname = shift; opendir( DIR, $dirname ) or die "$dirname: $!"; my ( $firstfile, @files ) = grep /.+\.txt$/, readdir DIR; open( F, $firstfile ) or die "$firstfile: $!"; my ( @names, @values ); my ( $basename ) = ( $firstfile =~ /(.+)\.txt$/ ); my $date = ; while () { chomp; while ($i++<14) { my ( $n, $v ) = split /,/, $_, 2; push @names, $n; push @values, $v; } continue push @names, $return; my ( $n, $v ) = split /,/, $_, 2; push @names, $n; push @values, $v; } close F; print join( ",", "sourcefile", "date", @names ), "\n"; print join( ",", $basename, $date, @values ), "\n"; for my $file ( @files ) { ( $basename ) = ( $file =~ /(.+)\.txt$/ ); if ( open( F, $file )) { ( $date, @values ) = ; chomp $date; chomp @values; s/.+?,// for ( @values ); # delete the "name," parts print join( ",", @values ), "\n"; close F; } else { warn "$file: $!\n"; } }