Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Stepping through a hash while modifiying its content

by Anonymous Monk
on Dec 28, 2012 at 04:58 UTC ( #1010617=note: print w/replies, xml ) Need Help??


in reply to Stepping through a hash while modifiying its content

each
If you add or delete a hash's elements while iterating over it, entries may be skipped or duplicated--so don't do that

perlfaq4#What happens if I add or remove keys from a hash while iterating over it?

(contributed by brian d foy)

The easy answer is "Don't do that!"

If you iterate through the hash with each(), you can delete the key most recently returned without worrying about it. If you delete or add other keys, the iterator may skip or double up on them since perl may rearrange the hash table. See the entry for each() in perlfunc.

  • Comment on Re: Stepping through a hash while modifiying its content

Replies are listed 'Best First'.
Re^2: Stepping through a hash while modifiying its content
by Gorgarian (Initiate) on Dec 28, 2012 at 12:13 UTC

    OK, thank you for confirming my suspicions, and pointing out the documentation that covers this. I can probably get away with only deleting the most recently returned entry, and not the second entry I reference,though with some considerable increase in runtime.

    Have a good new year.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010617]
help
Chatterbox?
[tye]: that is what getlogin() certainly *used* to do. I don't believe that is what it certainly should do.
[davido]: /var/run/utmp is 664 i think.
[tye]: Note that my "man getlogin" says that it uses stdin when it should use /dev/tty (calling a glibc bug). But that does not appear to be the case when I test it. But maybe Perl's getlogin() is not using glibc's getlogin().
[oiskuu]: well, run a strace and see what the getlogin does for you.... As I said. SELinux probably has those security labels. But not regular linux.
[tye]: for example, read https://unix. stackexchange.com/ questions/146138/ loginuid-should-be -allowed-to-change -or-not-mutable-or -not
[tye]: I'm not using SELinux and it certainly appears to disagree with you. shrug
[tye]: Since you brought up /proc, oiskuu, I didn't see you respond to my suggestion of 'loginuid'. Does your /proc not have such?

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2017-06-23 19:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many monitors do you use while coding?















    Results (554 votes). Check out past polls.