in reply to Hash , Keys strangely chopped !!

some of the keys are chopped off

$conf=substr($line,0,$i-1);
should be
my $conf=substr($line,0,$i);
or better yet
my $conf = substr($line, 0, $i);

If the "=" is at index $i==4 (the 5th character), you want to extract 4 characters (indexes 0 to 3), not three.

I am puzzled as to why the some keys are getting chopped off while others are not ?

They're all getting chopped. Some of them probably have spaces before the "=", so you end up chopping one of the spaces instead of a visible character.

Finally,
$val=substr($line,$i+1,length($line)-1-$i);
can be written simpler as
$val=substr($line,$i+1);
and more readably as
$val = substr($line, $i+1);

Update: Of course, the following is simpler yet:

my ($conf, $val) = map { trim($_) } split(/=/, $line, 2);

Update: Doh! Transient posted a split solution at the same time as my update.

Update: Removed recommendation to use chomp. It doesn't help since the user trim trailing whitespace.

Replies are listed 'Best First'.
Re^2: Hash , Keys strangely chopped !!
by Anonymous Monk on Jun 20, 2009 at 01:50 UTC
    Thanks , my ($conf, $val) = map { trim($_) } split(/=/, $line, 2); worked good for me.