in reply to Updating entry in DBM file adds extra character %09

The %09 sounds like a special character substitution for a URL. Unfortunately I can't think of which character it is for off the top of my head. Is your input form is passing info with Get instead of the Post method?
  • Comment on Re: Updating entry in DBM file adds extra character %09

Replies are listed 'Best First'.
Re: Re: Updating entry in DBM file adds extra character %09
by Anonymous Monk on Mar 18, 2002 at 02:40 UTC
    I'm passing with POST, but that's not the issue. When I first populate the record in the DBM file, no special characters are appended. The problem only occurs when I update a record in the DBM file.

    This all has something to do, I think, with the fact that when I delete a record from the database it is still present when I open the .pag file in a text editor, yet will not show up in a search of the DBM using the 'each' function (the desired effect). Obviously, some sort of incomplete deletion seems to be affecting the updated record.

    %09 is explained as the following on some sources I have read on the net: HT::=character_nbr(9)::= Move to next Tab-stop(ASCII'HT)\t. Decimal = 9, Hex = 09, ASCII = HT
      Don't be mislead by what a .pag file looks like in a text editor. When you delete a record, the space use for it in the file isn't reclaimed right away. A .pag file isn't like a flat text file, where deleting a line means rewriting the entire file to make the line really go away. As long as you can't get the deleted line back out of the DBM file via public interfaces, dont' worry about whether remnants of the record are still in the file.

      Show us the code that's setting up %header.

        >Show us the code that's setting up %header.

        Which code would that be? I think I posted the code that produces the %09. The only thing I didn't include was the part of the code that creates the html form with default values from the DBM file, but that part is just opening the DBM, reading the values into variables, and setting the default values of the html form to these variables. I open the database and read in as follows:

        dbmopen(%synusers,"synusers",0666) || die "Can't open synusers DBM fil +e\n"; #search database entries while (($key, $value) = each(%synusers)){ if (index($key,$fields{'alumnamelogin'})!=-1){ ($alumemail, $emailpub, $alumsnail1, $snail1pub, $alumsna +il2, $snail2pub, $alumsnail3, $snail3pub, $phone, $phonepub, $alumyears, $yearspub, $comment, $comme +ntpub, $synpass, $synpass2)=split(/::/,$value);
        ...Closing brackets later...

        Edit by dws for <code> tags</code>

Re: Re: Updating entry in DBM file adds extra character %09
by Anonymous Monk on Mar 18, 2002 at 03:52 UTC
    It may be, actually, that the password fields are not experiencing this problem. If that's the case, the problem may indeed be more related to the HTML methods. Testing.
      FYI, I suspect the problem is related to the arrangement of the code where I enter the values into the DBM. The line
      $synusers{$fields{'updalumname'}}="
      
      and those few that follow, I had to change a bit when I first wrote them. You'll note that the value assignments are spread strangely over 5 lines of code. I was having problems (redisplaying values in HTML) that were seemingly related to the carriage returns in the code.