http://www.perlmonks.org?node_id=122779


in reply to Just Another Perl Article

Hi :-),
this was a pretty cool read! I learned a lot from it. Thanks.

One question though: I don't really get this little piece of code:

$\ = $/; # ORS = IRS = "\n" $, = ":"; # OFS = "," while (<PASSWD>) { chomp; # removes $/ from $_ my @f = split $,; # splits $_ on occurrences of $, # fool around with @f print MOD @f; }
Why would it put a newline to the end of each line during the print? You say that "$\ goes where you put a \n in your print()" but you're chomp()ing the newlines.

What do I miss here?

Hmm, now looking at it I get even more questionmarks on my forehead:

  1. What's the point of assigning a colon to $, when split doesn't use it by default?
  2. Why do you have to assign $\ with $/? Aren't they supposed to have the same value anyway?
  3. Why don't we have an abbrev like <c> for the code-Tag, since it is really much to type *grin*?

Still, as I said above: good read!

Regards... Stefan
you begin bashing the string with a +42 regexp of confusion

ps: a typo in your article:

$ARGV this holds the input source currently begin read from
should probably be "being read from", er?

Replies are listed 'Best First'.
Re: Re: Just Another Perl Article
by davorg (Chancellor) on Nov 02, 2001 at 15:22 UTC
    • $/ is the input record separator. This is "\n" by default.
    • $\ is the output record separator. This is the empty string by default. Setting it to $/ means that you no longer need to put a "\n" on the end of each print statement.
    • $, is the string that is output between each element of the list passed to print. The default value is the empty string. By setting it to ":" we don't just control the split statement, but also the print statement. The elements of @f are printed separated by ":" characters.

    Does that help? You can get more info on special Perl variables like these in perlvar.

    --
    <http://www.dave.org.uk>

    "The first rule of Perl club is you don't talk about Perl club."