Fucking traitorous scum

    • nik9000@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      6 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
        ·
        5 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
          ·
          5 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
            ·
            5 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