#!/usr/bin/perl -w use strict; use warnings; use Data::Dumper; my %files_by; print "Enter File1 "; my $file1_name = <>; chomp($file1_name); open my $DATA, '<', $file1_name or die "Cannot open file 1\n"; while (<$DATA>) { my ($file_path, $file_name, $version) = m{^(.*/(.*))#(\d+)$}; push @{ $files_by{$file_name} }, { file_path => $file_path, version => $version, }; } open my $hash_glf, '>', "hash_glf.txt"; print $hash_glf Dumper( \%files_by ); close $DATA;