Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • I haven't taught Perl to beginners, but I've taught various bits of XML to beginners and intermediate programmers alike.

    I've found it to be rather common to need to apologize for the state of the technology being presented. This could be something as simple as using $array[0] vs. @array[0] in Perl, or much more unfortunate like the state of XML. Most recently, I had to teach DTD syntax and usage to a bunch of programmers who were going to be using XML Schema, and had to defend DTDs, only to illustrate t

  • I find the best thing to do is just lay it out straight. "It seemed to make sense at the time, but it turned out not to be a good idea. Cope. We're fixing this." I can pretty much guarantee it's not the first thing like this your students will have come across... :)
  • As I understand it, the funny character demarks the context of the variable. I haven't played around with this (yet), but what if the array was a list of refs to other arrays? Would that be @array[0] or @$array[0]? If the former, then all the more reason the funny character helps, as it denotes the context.


    • Unfortunately it's worse than you think.

      @$array[0] binds the @ more tightly than the [0], so it expects $array to be an array ref, which you're de-referencing, rather than $array[0] being the array ref. Except it doesn't work, because as you know, you don't say @x[0], you say $x[0], so when you say @$array[0], it thinks you're dereferencing $array, not @array, and $array doesn't exist (well it might, but it's not what you meant).

      Now @{$x[0]} will give you the de-referenced array in the first entry in th
  • I never have a problem with the $/@ distinction in my beginner's classes. I simply grind it into their heads that "$ always means 'one' of something". One element of an array, one item from a hash, and in the case of scalars it's self evident. Keeping the rules simple (at least to begin with), having a "catchphrase" that embodies the rule, and repeating it often works well.

    And as for Perl 6... I don't like scaring the novices with evil that hasn't yet come to pass.