【发布时间】:2011-02-22 04:25:05
【问题描述】:
我有这部分代码用于编辑提示表,如果找到,我不知道如何反转两个连续的行:
/^TITLE.*?"$/
/^PERFORMER.*?"$/
倒转
/^PERFORMER.*?"$/
/^TITLE.*?"$/
在我的情况下,解决方案是什么?
use strict;
use warnings;
use File::Find;
use Tie::File;
my $dir_target = 'test';
find(\&c, $dir_target);
sub c {
/\.cue$/ or return;
my $fn = $File::Find::name;
tie my @lines, 'Tie::File', $fn or die "could not tie file: $!";
for (my $i = 0; $i < @lines; $i++) {
if ($lines[$i] =~ /^REM (DATE|GENRE|REPLAYGAIN).*?$/) {
splice(@lines, $i, 3);
}
if ($lines[$i] =~ /^\s+REPLAYGAIN.*?$/) {
splice(@lines, $i, 1);
}
}
untie @lines;
}
【问题讨论】:
-
您在处理一个非常大的文件吗?
-
不,通常单个 cue sheet 是 50-100 行,但每次我使用 File::find 通过目录处理它们时。发布的代码是包含多个子代码的较大代码的一部分。
标签: perl