标签: perl

  • JavaScript 获取正则表达式中子表达式的个数

    JavaScript 获取正则表达式中子表达式的个数

    正如标题所示,我厂有这么一个需求。我不会,老板鄙视我后丢过来一个链接:stackoverflow: Count the capture groups in a qr regex?

    看不太懂 Perl,但是这个思路很棒。所以改写成 JS 版,并记录如下:

    function countCapturingGroups(r){
      r = new RegExp(`|${r.source}`);
      const result = ''.match(r);
      return result.length - 1;
    }
    
    const result = countCapturingGroups(/fo(.)b(..)/);
    console.log(result); // 2
    

    它的原理是这样的。构建一个新正则,包含两部分:空字符和目标正则。空字符正则会完成与目标字符串的匹配,保证有结果(不然的话就会返回 null。接下来 | 会保证后面的正则也是有效的,可以生成包含子表达式结果的数组。

    我们知道,结果是个类数组,结构大约是:

    1. 全部匹配字符串
    2. 0~N 子表达式结果
    3. 其它一些属性

    所以用其长度 – 1 就能获得子表达式的个数。从功耗上来说,这个应该是很节省了。

  • 在新 Mac 上配置 Perl

    在新 Mac 上配置 Perl

    最新的 macOS Catalina 10.15.1 自带 Perl 5.18,但是不包含包管理工具 Cpanm,所以要手动安装。

    第一步,安装 xcode。

    第二步,安装 homebrew

    第三步,安装最新 Perl 5.30(没有 Perl 6……)

    brew install perl

    安装完成之后,需要验证一下当前使用的 perl 路径 perl -v 如果还是 5.18,那么检查一下引用 whereis perl,应该能看到 /usr/local/bin/perl/usr/bin/perl 前面,并且指向 /usr/local/Cellar/perl/{version}/bin/perl,那么就退出当前 Terminal,重新打开,应该就好了。

    第四步,安装 Cpanm

    brew install cpanm

    第五步,安装其它包

    cpan install Test::Base
    cpan install IPC::Run

  • Perl 笔记

    Perl 笔记

    主要记录在 Windows 下使用 Perl 的经验。

    WSL

    1. 内建 Perl 环境

    安装

    我安装的是 Strawberry 版,没啥好说的,下载安装即可。