我正在尝试使用perl中的正则表达式将从“1. Virtualization”开始的值更改为“2.Virtualization”。 1.Virutalization和2.Virtualization之间有很多数据。
我的数组内容示例如下所示 “1.虚拟化容量管理由于业绩不佳导致的事故数量0 999 10 5 4容量计划的生产成本10K 100K 80K 30K 10K计划外容量购买数量0 999 15 10 5 2.虚拟化财务管理事件数量由于业绩不佳0 999 10 5 4容量计划的生产成本10K 100K 80K 30K 10K“
如何编写一个可控制的循环,其值介于1和2之间。在1到2之间,它甚至应该将数据“容量计划10K 100K 80K 30K 10K的生产成本”格式化并放入一个阵列位置。
我尝试编写一些代码无法理解如何编写受控循环。任何人都可以帮我解决这个问题。foreach (@array) {
if ($_ =~ /\d+\.\s+Virtualization.*/) { #greps values starting in 1. Virtualizaton
push (@node_level1, "$_"); #stores in the node_level1
} elsif ($_ =~ /(\%\s+.*)/) { #greps values beginning with % Number of Nodes
# print "$_\n";
}
}
提前致谢。
答案 0 :(得分:1)
在perl中有一个自动操作符可以执行与perreal的答案相同的操作,flip-flop operator:
foreach (@array) {
if (/1.\s+Virtualization/../2.\s+Virtualization/) {
push (@node_level1, $_);
}
}
答案 1 :(得分:0)
使用州长:
my $state = 0;
foreach (@array) {
if ($_ =~ /1.\s+Virtualization/) {
$state = 1;
} elsif (($state == 1) and ($_ =~ /2.\s+Virtualization/)) {
$state = 0;
} elsif ($state == 1) {
push (@node_level1, $_); #stores in the node_level1
}
}