I am Parsing GNU/Linux configuration file to automate the process.
CONFIG_TULIP_NAP => y CONFIG_USB_SISUSBVGA_CO => y CONFIG_PC30 => m CONFIG_USB_TES => m CONFIG_I2C_NFORCE => m CONFIG_MTD_SBC_GX => m CONFIG_NTFS_DEBUG => Z CONFIG_DRM_SI => m CONFIG_SCSI_ISCSI_ATTR => m CONFIG_ACPI_SLEE => y CONFIG_DLCI_MA => 8 CONFIG_SCSI_IPR_DUMP => Z CONFIG_ECONET_NATIV => y CONFIG_BRIDG => m CONFIG_IP_ADVANCED_ROUTE => y CONFIG_AIC79XX_REG_PRETTY_PRIN => y CONFIG_IF => m some of the keys are chopped off like CONFIG_BRIDG there are so many entries in the config file with this name. 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 similarly, CONFIG_AIC79XX_REG_PRETTY_PRINT=y is shown only as CONFIG_AIC79XX_REG_PRETTY_PRIN => y I am maintaining hash with configuration name as key and value to be y,m,Z I am puzzled as to why the some keys are getting chopped off while others are not ? ====== code => #!/usr/bin/perl # This part of the script takes the old config # file and sets only those options into the new # config files which are set. open CONF1 ,"<","config-2.6.18-custom" or die $!; open CONF2 ,"<","config-2.6.16.27-custom" or die $!; my @lines1= <CONF1>; my @lines2= <CONF2>; sub trim{ my $string = shift; $string =~ s/^\s+|\s+$//g; return $string; } sub get_config_info_in_mem { my %hash_config = (); my ($lref) = @_; my (@lines) = @$lref; for $line (@lines) { if (substr($line,0,6) eq "CONFIG" ) { $i=index($line,"="); $val=substr($line,$i+1,length($line)-1-$i); $conf=substr($line,0,$i-1); # print "$conf=$val\n"; $conf=trim($conf); $val=trim($val); $hash_config{$conf} = $val; } else { if(substr($line,0,8) eq "# CONFIG") { $i=index($line,"CONFIG_"); $i_space=index($line," ",$i+1); $conf=substr($line,$i,$i_space-$i); $val="Z"; # print "$conf=$val\n"; $conf=trim($conf); $val=trim($val); $hash_config{$conf} = $val; } } } return %hash_config; } sub print_hash_in_mem { my ($hc) = @_; my %hash_config =%$hc; while( my($conf,$val) = each(%hash_config)) { print "$conf => $val\n"; } } my %hash_config1=get_config_info_in_mem(\@lines1); #print $hash_config1."\n"; print_hash_in_mem(\%hash_config1); # my $hash_config2=get_config_info_in_mem(@lines2); # print_hash_in_mem(%hash_config2);

In reply to Hash , Keys strangely chopped !! by onkar

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.