>>>>> "BRH" == Bryan R Harris <bryan_r_har...@raytheon.com> writes:
BRH> I have code that looks like this: BRH> ************************************** BRH> if ($props =~ /\S/) { BRH> %{$ptr[-1]->[-1]} = ($props =~ m/\s*([^=]+)="([^"]+)"/g); where is @ptr set? what are you using it for? BRH> } BRH> My problem is that I only want to append the properties and their BRH> values to that hash, not replace that hash with the new BRH> properties. BRH> Is there a notation that will let me do that without requiring BRH> temporary variables? given a list of key/value pairs, there is no direct way to append to a hash. and append is a poor term anyhow. there are modules on cpan with various subs that do this. here is one way to do it with no temp vars: this does copy the old hash and the new elements are added which will overwrite any old keys if there are dups. just reorder the two parts to make the old hash's values overwrite the new ones. %hash = ( %hash, ($props =~ m/\s*([^=]+)="([^"]+)"/g) ) ; %hash = ( ($props =~ m/\s*([^=]+)="([^"]+)"/g), %hash ) ; another way without copying the hash is to loop over the new keys/values with each on an anon hash: while( my( $key, $value ) = each( %{ $props =~ m/\s*([^=]+)="([^"]+)"/g } ) ) { $hash{ $key } = $value ; } you can also loop over the list 2 at a time with different tricks and do the same assignment. there are zip functions and others on cpan that will take 2 elements at a time from a list. they do use temp vars inside so they can keep track of the index as you can't do that with a list itself. uri -- Uri Guttman ------ u...@stemsystems.com -------- http://www.sysarch.com -- ----- Perl Code Review , Architecture, Development, Training, Support ------ --------- Gourmet Hot Cocoa Mix ---- http://bestfriendscocoa.com --------- -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/