区分一行中的多个正则表达式命中?
发布时间:2020-12-14 06:03:12 所属栏目:百科 来源:网络整理
导读:我正在尝试用Perl中的随机数替换IP地址: while (my $line = file){ $line =~ $regex{'ipadress'}; my $rand0 = int(rand(256)); my $rand1 = int(rand(256)); my $rand2 = int(rand(256)); my $rand3 = int(rand(256)); $ = "$rand0.$rand1.$rand2.$rand3n
我正在尝试用Perl中的随机数替换IP地址:
while (my $line = <file>){ $line =~ $regex{'ipadress'}; my $rand0 = int(rand(256)); my $rand1 = int(rand(256)); my $rand2 = int(rand(256)); my $rand3 = int(rand(256)); $& = "$rand0.$rand1.$rand2.$rand3n";` } 问题是在某些情况下,一行中有多个IP地址. 解决方法
好的开始$&是只读的,你不能像那样分配它来修改目标字符串.
我也不确定你的哈希的关键是否真的是ipadress(有一个),但我相信如果没有,你可以修复它. 我会写这样的东西.替换运算符上的/ e修饰符会导致执行替换字符串以确定要替换匹配的内容. join语句生成从0到255的四个字节值,并用点连接它们以形成随机地址. while (my $line = <$fh>) { $line =~ s{$regex{ipadress}}{ join '.',map int(rand(256)),0..3 }eg; print $line; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |