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 |