#!/usr/bin/env perl use strict; use warnings; use Data::Table; my $dt = Data::Table::fromCSV("data.csv"); # print "DATA:\n"; # print $dt->csv; # All of the columns except the ones you want to aggregate my $cols = [ 'Amount', 'AmountId', 'MRP', 'ChoiceId', 'MultiplyingFactor', 'PF new', 'ExtraTalkTime', 'Recharge Type', 'FRC/SRC' ]; my $mdt = $dt->melt( $cols ); # print "MELT:\n"; # print $mdt->csv; my $cdt = $mdt->cast( $cols, 'variable', Data::Table::STRING, 'value', \&aggregate ); #print "CAST:\n"; #print $cdt->csv; exit; sub aggregate { my @values = @_; my $av = join(';', @values); return($av); }