perl – 如何将下一个搜索开始位置倒回1?

如何将下一个搜索位置的开头倒数1?例如,假设我想匹配#之间的所有数字.以下将只给我奇数.
my $data="#1#2#3#4#";

while ( $data =~ /#(\d)#/g ) {
  print $1,"\n";
}

但是如果我能够将下一个位置的开始倒数1,我会得到偶数和奇数.

这不起作用:pos()= pos() – 1;

我知道我可以用拆分完成这个.但这并没有回答我的问题.

for (split /#/,$data) {
  print $_,"\n";
}

解决方法

你在$_上调用pos()而不是$data

perldoc

Returns the offset of where the last m//g search left off for the variable in question ($_ is used when the variable is not specified)

所以,

pos($data) = pos($data) - 1;

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...