From ram31's OP:

I am using the below code and it works when i use print. I want to assign it to scalar variable because only one element will be the output of map.

One has to do a lot of guessing when reading a post like this. Does "... one element will be the output of map" mean that that's what ram31 wants to be the case, or is it an assertion that it is the case? It's easy to demonstrate, as you have done, that the latter is false: there is an empty string output for every non-match in the map input for the  $1 if /(...)/ sub block code. The suspicion that ram31 did not understand this was bolstered by the statement "... it works when i use print" because print, with the default  $, value, simply masks the presence of all those empty strings.

That's how I arrived at my assumption that the  @GET_STRING array could contain any number of matching and non-matching strings in any order, and, from the OPed code, that ram31 wanted to extract and return a sub-string from the first (i.e., lowest-index) match. (The assumption of any number of matching strings was defensive.)

So I was at some pains to explain to ram31 why many empty strings would potentially be generated by the OPed code, and that there was another approach that entirely avoided this complication. (It remained for runrig to point out the most elegant and, I believe, most efficient approach.)

So what? The fact remains that, as you and I and others have pointed out, a for-loop approach remains the most efficient for what I understand ram31 to want. Be that as it may, ram31 specifically wrote that he or she was aware of that approach and was instead interested in a map approach. So that's what we've all spent most of our time and effort discussing. Caveat praeceptor.

So what's the point of this reply? None, really, except that I enjoyed reading your thoughtful and detailed post and I wanted to respond in kind.


In reply to Re^4: Assign result of map to scalar variable by AnomalousMonk
in thread Assign result of map to scalar variable by ram31

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.