#!/usr/bin/perl use strict; use warnings; my $ifile = "medica.csv"; my $ofile = "medrank.csv"; my %meds; my %patients; open IDF, "<$ifile" or die "No such file"; while () { (my $gay_id, my $ldata) = /^.*;(\d*)\.0;(.*)$/; if ($ldata){ my @list = split /, /, $ldata; foreach my $med (@list){ if ($med) { $med =~ s/[0-9]+.*$//; unless (exists($meds{$med})){ $meds{$med} = 1; $patients{$gay_id}{$med} = 1; }else{ $meds{$med}++; $patients{$gay_id}{$med} = 1; } } } } } close IDF; open ODF, ">$ofile" or die "Could not open file!!!"; foreach my $med (sort keys %meds){ print ODF "$med $meds{$med}\n"; } close ODF;