#!/usr/bin/perl use strict; use warnings; use File::Find::Rule; use File::Basename qw(basename); use Data::Dump qw(dump); my %rois = ('global' => 'AG', ('parietal' => 'AP'), ('tempo' => 'ATM') ); my $parse_dir = shift; my @txts = find(file => 'name' => "*.txt", in => $parse_dir); my %info; foreach my $report (sort @txts){ my $name = basename $report; $name =~ s/\.txt$//; foreach my $roi (sort keys %rois){ unless($rois{$roi} eq 'AG'){ $info{$name}{$rois{$roi}.'_I'} = "NA"; $info{$name}{$rois{$roi}.'_D'} = "NA"; }else{ $info{$name}{$rois{$roi}} = "NA"; } } open IDF, "<$report"; my $this_line; while() { if (/^Atrofia/){ foreach my $roi (sort keys %rois){ if (/$roi/){ if (/\(D\/I\)/){ my ($gd,$gi) = /\(D\/I\).*(\d)\/(\d)/; $info{$name}{$rois{$roi}.'_I'} = $gi if defined $gi; $info{$name}{$rois{$roi}.'_D'} = $gd if defined $gd; }else{ (my $gb) = /grado.*\d*-*(\d)/; $info{$name}{$rois{$roi}} = $gb if defined $gb; } } } } } close IDF; } print "Subject"; foreach my $roi (sort keys %rois){ my $ch; unless ($rois{$roi} eq 'AG'){ $ch = ','.$rois{$roi}.'_I,'.$rois{$roi}.'_D'; }else{ $ch = ','.$rois{$roi}; } print "$ch"; } print "\n"; foreach my $subject (sort keys %info){ print "$subject"; foreach my $roi (sort keys %rois){ unless ($rois{$roi} eq 'AG'){ my $ad = exists($info{$subject}{$rois{$roi}.'_D'})?$info{$subject}{$rois{$roi}.'_D'}:"NA"; my $ai = exists($info{$subject}{$rois{$roi}.'_I'})?$info{$subject}{$rois{$roi}.'_I'}:"NA"; print ",$ai,$ad"; }else{ my $ag = exists($info{$subject}{$rois{$roi}})?$info{$subject}{$rois{$roi}}:"NA"; print ",$ag"; } } print "\n"; }