Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
Push onto a stack, pop off the top of the stack.

I think pop was an assembly language instruction in 6502 and someone else said earlier it seems. Data is stored on the stack and you pop the last one off the top.

Shift/unshift I admit has always been confusing to me if I think about it long enough, since I mix it up with binary powers (i.e. the "shift" operator << in perl). There is an assembler command to bitwise shift everything one digit up, etc.. The only useful thing I can say is that you get the first argument provided by the user from the command line with shift, you are shifting it off the ARGV array. In a subroutine you can get the first argument off the @_ with which it got called with shift. Basically if you think of shift as shifting something off the bottom then unshift is the (confusing) reverse.

I miss peek() which looked at a memory location without touching it and poke() which touched the location, i.e. to drive the speaker (in the reverse direction I discovered)

However you are entirely right. You cannot "shift" trays off the bottom of a stack easily, they are going to be held down by the weight of the trays on top. Maybe think of shift as "shaft". You are going to take a long steel pole and thrust it at the bottom-most tray to shoot it out from the bottom of the stack. It gets shafted! (beat up / betrayed / knocked out / messed with) Let's use this one without telling anybody.. :)

Actually this is eminently useful. Unshafting is then making something not shafted, i.e. making things clean and proper. Which would obviously mean picking the knocked out tray off the floor and wedging it carefully back in under the bottom of the stack of trays. At least I can convince myself about it.

In reply to Use shaft for shift by mattr
in thread Why are "push", "pop", "shift" and "unshift" so named? by Cody Pendant

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others chanting in the Monastery: (2)
    As of 2020-10-27 01:08 GMT
    Find Nodes?
      Voting Booth?
      My favourite web site is:

      Results (255 votes). Check out past polls.