Fucking traitorous scum

      • nik9000@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        2 days ago

        I genuinely love the idea of the $1 after a match. It feels so natural in perl! So many things are text matching.

        But! But! But!! Those $ variables are dynamic scoped! If you call a method and it matches stuff you lose the variables!

        I’ll bet there is a way around it. But it made me so sad.

        • raspberriesareyummy@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          2 days ago

          Yes, regex handling in Perl is the smoothest I have ever seen, and it matched the first description I heard of perl as “the best tool for text processing”. I have done big things with that.

          Those $ variables are dynamic scoped! If you call a method and it matches stuff you lose the variables!

          My match scopes typically looked like so:

          if ($inString =~ /^([ \t]+)(.*)$/) {
              my $indent = $1;    # store first match
              my $remainder = $2; # store second match
              
              # do stuff
          }
          

          (not tested, just edited by hand to anonymise)

          • nik9000@programming.dev
            link
            fedilink
            arrow-up
            1
            ·
            2 days ago

            I think it came up more like

            if ($inString =~ /^([ \t]+)(.*)$/ && has_a_cow($2)) {
            

            For me. I dunno. I was never good at perl. I just wanted to hack something together.

            • raspberriesareyummy@lemmy.world
              link
              fedilink
              arrow-up
              1
              ·
              2 days ago

              I did bigger parsing tools in perl, so I often matched a lot of expressions and needed them all in variables. Not only to save the $N variables, but also for code readability, I would then store the matches in proper variable names