code_junkie

Perl: while ($key = each %hash) doesn't stop at key = 0

Nov 11th, 2011
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. %h = ( 0=>'zero', 1=>'one', 2=>'two' );
  2. while ($k = each %h) {
  3. $v = delete $h{$k};
  4. print "deleted $v; remaining: @h{0..2}n";
  5. }
  6.  
  7. deleted one; remaining: zero two
  8. deleted zero; remaining: two
  9. deleted two; remaining:
  10.  
  11. %h = ( 0=>'zero', 1=>'one', 2=>'two' );
  12. sub each2 {
  13. return each %{$_[0]};
  14. }
  15. while ($k = each2 %h) {
  16. $v = delete $h{$k};
  17. print "deleted $v; remaining: @h{0..2}n";
  18. }
  19.  
  20. deleted one; remaining: zero two
  21.  
  22. while ($line = <FILE>)
  23.  
  24. while ($key = each %hash)
  25.  
  26. case OP_SASSIGN:
  27. if (k1->op_type == OP_READDIR
  28. || k1->op_type == OP_GLOB
  29. || (k1->op_type == OP_NULL && k1->op_targ == OP_GLOB)
  30. || k1->op_type == OP_EACH)
  31. expr = newUNOP(OP_DEFINED, 0, expr);
  32. break;
  33.  
  34. $ perl -MO=Deparse,p your_example.plx
  35. (%h) = (0, 'zero', 1, 'one', 2, 'two');
  36. while (defined($k = each %h)) {
  37. $v = delete $h{$k};
  38. print "deleted $v; remaining: @h{0..2}n";
  39. }
  40. your_example.plx syntax OK
Add Comment
Please, Sign In to add comment