main::(working.pl:11): while (<$fh>) { DB<1> main::(working.pl:12): /[(](\w+)[^(]+[(](\w+)[^:]+:\s+(\w+).*?slack[^-]+(-\d+)/s; DB<1> main::(working.pl:13): $PG{$3}{"$1-$2"} = $4; DB<1> main::(working.pl:12): /[(](\w+)[^(]+[(](\w+)[^:]+:\s+(\w+).*?slack[^-]+(-\d+)/s; #### my $report_file = $ARGV[0]||'timing_report.rpt'; my %PG; local $/ = "Startpoint"; open my $fh, '<', $report_file; while (<$fh>) { if(/[(](\w+)[^(]+[(](\w+)[^:]+:\s+(\w+).*?slack[^-]+(-\d+)/s) { $PG{$3}{"$1-$2"} = $4; } } use Data::Dump; dd \%PG;