in reply to adding to a hash

Generally speaking, if you are getting variable name/value pairs then adding them to the hash is simply a matter of:

$variables{$varname}=$varvalue;

Because you mention that you don't want to delete variables that are already there, I wonder if you mean that some of the variables you are reading in may already be in the hash. If that is the case, you can make sure they are not in the hash by doing something like this when you assign the values:

$variables{$varname}||=$varvalue;

That little ||= keeps a value in the hash if it is there or assigns a new key/value pair if it is not defined yet.

The question here is: What exactly is get_page_content() returning? A scalar? array? reference? If you can tell us this, we can give you a more specific anwer.

Cheers

Replies are listed 'Best First'.
Re: Re: adding to a hash
by sauoq (Abbot) on May 13, 2003 at 20:19 UTC
    That little ||= keeps a value in the hash if it is there or assigns a new key/value pair if it is not defined yet.

    Oops. You have to be a little more careful than that. Your code will perform the assignment even in the case that a previous false value exists. For example:

    $h{key} = 0; $h{key} ||= "foo"; print $h{key};

    If you really want to check for definedness, you should use defined(). Often, though, there are situations where undef is a valid value too and in those cases you should use exists() to check whether the hash key exists yet. Here is one way to do that succinctly:

    $h{$key} = "value" unless exists $h{$key};

    -sauoq
    "My two cents aren't worth a dime.";