#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %hash_table; my $name; my $file = '/tmp/fruitdir/fruit1.txt'; open my $fh, "<", $file or die "Can't open $file: $!"; while (<$fh>) { chomp; if (/^\s*fruitName/) { ($name) = /(\".+\")/; next; } s/(fruitCount|fruitValue)/$name\.$1/; my ($key, $value) = split /\s+/, $_, 2; $hash_table{$key} = $value; } print Dumper(\%hash_table);