The problem is "context". Perl will continue to trip you up until you understand the significance of context... see Context Tutorial.

In this case $a = (a..c) ; you're tripping over the magical properties of '..' in scalar context. Now, you may have thought that '..' was a list constructor. Or, you may have thought that (a..c) was a list constructor. Unfortunately, only the the first is ever the case, and then only in "list context".

The action of '..' is described in perlop. In scalar context when the arguments are constants it compares the arguments with $. (the most recent input file line number) such that: as you read the input lines, 20..25 returns false for lines 1 to 19, then 1, 2, 3, 4, 5 for lines 20 to 24, 6E0 for line 25 (the last line in the range) and false for the rest of the file.

Now, $a = (a..c) is equivalent to $a = 'a'..'c'. Since neither argument is numeric it's not clear what Perl should do. Further, this requires $. to have a value. It appears that Perl decides you are immediately at the end of this badly defined range -- so returns '1E0'.

Apart from context, the other take-home here is to use use strict and use warnings.


In reply to Re: scalar slice assignment doubt by gone2015
in thread scalar slice assignment doubt by perlstarter

Title:
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, details, 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, summary, 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.