Another way of doing it: the List::Util::reduce function works more or less the way you expected join to work, except that it's more general and not only for joining

use List::Util 'reduce'; print reduce { $a . ($b ? ":" : "") . $b } (0,1,0,1);

From perldoc List::Util :

 reduce BLOCK LIST
           Reduces LIST by calling BLOCK multiple times, setting $a and $b
           each time. The first call will be with $a and $b set to the first
           two elements of the list, subsequent calls will be done by setting
           $a to the result of the previous call and $b to the next element in
           the list.

           Returns the result of the last call to BLOCK. If LIST is empty then
           "undef" is returned. If LIST only contains one element then that
           element is returned and BLOCK is not executed.

               $foo = reduce { $a < $b ? $a : $b } 1..10       # min
               $foo = reduce { $a lt $b ? $a : $b } 'aa'..'zz' # minstr
               $foo = reduce { $a + $b } 1 .. 10               # sum
               $foo = reduce { $a . $b } @bar                  # concat

List::Util is a core module since perl-5.7.3.


In reply to Re: Surprised by join by itub
in thread Surprised by join by EdwardG

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.