Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换多行perl变量中的固定位置_Perl_Variables_Replace_Line - Fatal编程技术网

替换多行perl变量中的固定位置

替换多行perl变量中的固定位置,perl,variables,replace,line,Perl,Variables,Replace,Line,perl变量具有多行赋值 2100010000 2200010000 2300010000 3100010001 3200010001 我想用另一个值(如0004)替换每行的位置3到6 2100040000 2200040000 2300040000 3100040001 3200040001 我不想遍历perl变量中的每一行 您可以使用m标志对多行字符串执行正则表达式替换。要执行所有此类更换,请使用g标志。在多行上下文中,^字符将匹配

perl变量具有多行赋值

2100010000   
2200010000  
2300010000  
3100010001  
3200010001        
我想用另一个值(如0004)替换每行的位置3到6

2100040000  
2200040000  
2300040000  
3100040001  
3200040001   

我不想遍历perl变量中的每一行

您可以使用
m
标志对多行字符串执行正则表达式替换。要执行所有此类更换,请使用
g
标志。在多行上下文中,
^
字符将匹配多行字符串每行的开头

$numbers=~s^(\d{2})(\d{4})|$1$replacement | mg

表示查找以2位数字开始,后跟4位数字和 将其替换为
$1
中捕获的前两位数字,然后是变量
$replacement
中的字符串

对这个话题作一个温和的介绍

#!/usr/bin/env perl

use warnings;
use strict;

my $numbers = <<EONUMBERS;
2100010000
2200010000
2300010000
3100010001
3200010001
EONUMBERS

my $replacement = '0004';

print "before:\n$numbers";
$numbers =~ s|^(\d{2})(\d{4})|$1$replacement|mg;
print "after:\n$numbers";
before:
2100010000
2200010000
2300010000
3100010001
3200010001
after:
2100040000
2200040000
2300040000
3100040001
3200040001