#!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use Text::CSV qw( csv ); use Excel::Writer::XLSX; my $guide = $ARGV[0]; my $ofile = $ARGV[1]; my $idir = 'fsrecon'; my $info = csv (in => "info_page.csv"); $ofile =~ s/\.(\w*)?$/.xlsx/; my $workbook = Excel::Writer::XLSX->new($ofile); my $worksheet = $workbook->add_worksheet('Info'); for my $i (0 .. $#{$info}) { my $row = $info->[$i]; for my $j (0 .. $#{$row}){ $worksheet->write( $i, $j, $row->[$j]); } } opendir (DIR, $idir); my @ifiles = grep(/\.csv/, readdir(DIR)); close DIR; foreach my $ifile (@ifiles){ my $tmpf = 'tmp_'.$ifile; my $order = 'join -t, -1 2 -2 1 '.$guide.' '.$idir.'/'.$ifile.' > '.$tmpf; system($order); my $idata = csv (in => $tmpf); # as array of array (my $shname = $ifile) =~ s/\.csv$//; $worksheet = $workbook->add_worksheet($shname); for my $i (0 .. $#{$idata}) { my $row = $idata->[$i]; for my $j (0 .. $#{$row}){ $worksheet->write( $i, $j, $row->[$j]); } } unlink $tmpf; }