#!/usr/bin/perl use strict; use warnings; my $ifile = "toparse.txt"; my $ofile = "med0.csv"; my %meds; my %patients; open IDF, "<$ifile" or die "No such file"; while () { (my $gay_id) = /.*Interno=(\d*)\.0/; my @list = split /, /; foreach my $nomed (@list){ (my $med, my $blah) = split /=/,$nomed; unless ($med eq "Interno"){ $meds{$med} = 1; $patients{$gay_id}{$med} = 1; } } } close IDF; open ODF, ">$ofile" or die "Could not open file!!!"; print ODF "Interno"; foreach my $med (sort keys %meds){ print ODF ",$med"; } print ODF "\n"; foreach my $patient (sort keys %patients){ print ODF "$patient"; foreach my $med (sort keys %meds){ if(exists($patients{$patient}{$med})){ print ODF ",1"; }else{ print ODF ",0"; } } print ODF "\n"; } close ODF;