#!/usr/bin/perl -w use strict; use Data::Dumper; open (my $config_file_main ,"<","config18.txt" )or die $!; open (my $config_file_update ,"<","config27.txt" )or die $!; my %file1 = read_cfg ($config_file_main); my %file2 = read_cfg ($config_file_update); # this combines both hashes into one !!!! # A simple "merge" operation. # More complex things can be done %file1 = (%file1, %file2); # Usually it is better to print in # a human readable format with sort # foreach my $key (sort keys %file1) { print "$key = $file1{$key}\n"; } # This returns a list instead of list ref # Of course using a ref is more efficient, but here I # do something simple to illustrate points above.. # sub read_cfg { my $file_handle = shift; my %hash; while (<$file_handle>) { next if /^\s*$/; #skip blank lines my ($name,$value) = $_ =~ /^\s*(\S+)\s*=>\s*(\S+)/; $hash{$name} = $value; } close ($file_handle); return %hash; } #### config27: CONFIG_BRIDGE_NF_EBTABLES => m CONFIG_BRIDGE_EBT_BROUTE => y CONFIG_BRIDGE_EBT_T_FILTER => z #### config18: CONFIG_BRIDGE_NF_EBTABLES => m CONFIG_BRIDGE_EBT_BROUTE => m CONFIG_BRIDGE_EBT_T_FILTER => m CONFIG_BRIDGE_EBT_T_NAT => m CONFIG_BRIDGE_EBT_802_3 => m CONFIG_BRIDGE_EBT_AMONG => m CONFIG_BRIDGE_EBT_ARP => m CONFIG_BRIDGE_EBT_IP => m CONFIG_BRIDGE_EBT_LIMIT => m CONFIG_BRIDGE_EBT_MARK => m CONFIG_BRIDGE_EBT_PKTTYPE => m CONFIG_BRIDGE_EBT_STP => m CONFIG_BRIDGE_EBT_VLAN => m CONFIG_BRIDGE_EBT_ARPREPLY => m CONFIG_BRIDGE_EBT_DNAT => m CONFIG_BRIDGE_EBT_MARK_T => m CONFIG_BRIDGE_EBT_REDIRECT => m CONFIG_BRIDGE_EBT_SNAT => m CONFIG_BRIDGE_EBT_LOG => m CONFIG_BRIDGE_EBT_ULOG => m #### CONFIG_BRIDGE_EBT_802_3 = m CONFIG_BRIDGE_EBT_AMONG = m CONFIG_BRIDGE_EBT_ARP = m CONFIG_BRIDGE_EBT_ARPREPLY = m CONFIG_BRIDGE_EBT_BROUTE = y CONFIG_BRIDGE_EBT_DNAT = m CONFIG_BRIDGE_EBT_IP = m CONFIG_BRIDGE_EBT_LIMIT = m CONFIG_BRIDGE_EBT_LOG = m CONFIG_BRIDGE_EBT_MARK = m CONFIG_BRIDGE_EBT_MARK_T = m CONFIG_BRIDGE_EBT_PKTTYPE = m CONFIG_BRIDGE_EBT_REDIRECT = m CONFIG_BRIDGE_EBT_SNAT = m CONFIG_BRIDGE_EBT_STP = m CONFIG_BRIDGE_EBT_T_FILTER = z CONFIG_BRIDGE_EBT_T_NAT = m CONFIG_BRIDGE_EBT_ULOG = m CONFIG_BRIDGE_EBT_VLAN = m CONFIG_BRIDGE_NF_EBTABLES = m