IP解析与并发编程实践

89、编写一个语法来匹配点分十进制 IP 地址,并编写动作类将其转换为对应的整数值,使用给定的 IP 地址 192.168.1.137 进行测试

以下是实现该功能的代码:

grammar DottedDecimal {
    token TOP { <digits> ** 4 % '.' }
    regex digits { ( <[0..9]> ** 3 ) <?{ 0 <= $0 <= 255 }> }
}

class DottedDecimal::SimpleActions {
    method TOP ($/) {
        make [+] (
            $<digits>.[0] +< 24,
            $<digits>.[1] +< 16,
            $<digits>.[2] +< 8,
            $<digits>.[3]
        );
    }
}

my $string = '192.168.1.137';
my $match = DottedDecimal.parse( $string, :actions(DottedDecimal::SimpleActions));
say $match;
say $match.made.fmt('%X');

这段代码定义了一个语法 DottedDecimal 来匹配点分十进制 IP 地址,然后定义了一个动作类 DottedDecimal::SimpleActions 将匹配到的 IP 地址转换为对应的整数值。最后使用给定的 IP 地址 192.168.1.137 进行测试,并输出匹配结果和转换后的整数值的十六进制表示。

90、编写代码,使用 Supplier 来发射值,并使用 tap 来读取这些值

以下是示例代码:

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值