Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

comment on

( [id://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

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



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2024-03-28 17:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found