in reply to Split and print hash based on regex

print {$outfile} $_;

Where do you populate $_?

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^2: Split and print hash based on regex
by Maire (Scribe) on Mar 27, 2018 at 15:42 UTC
    This is a very good question, thanks! And I'm guessing from your response that this may lie at the heart of the problem? The original script that I am working with (reproduced now in an edit to my original post) used very similar syntax successfully, but I need to think about how the original script manages to populate $_ and my modified script doesn't.
      while (<DATA>)

      is equivalent to

      while ($_ = <DATA>)

      which is interpreted as

      while (defined($_ = <DATA>))

      So that's how $_ is populated in the original script.

      There's another question, though: How $1 is populated. Note that the matching uses =, not =~, so it's equivalent to

      my($regex) = ($_ =~ /This is/g)
      where the parentheses after my enforce the list context on the match, but without a capture group in the regex, there's no way to populate $1.

      ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
        Ah okay, that makes a lot more sense now. Thank you for your very clear explanation: it's very much appreciated.