perl - 将一行中某个位置的字符与同一位置的其余行进行比较的简单方法(Perl)

标签 perl comparison position character

我有一个包含一堆行的文件,我想比较一下特定列的所有字符是否与 Perl 中文件的其余部分匹配。例如,如果我有一个文件:

abcdefg
avcddeg
acbdeeg

文件会将 a, d, g 读取为匹配项并返回位置。

我正在考虑在 perl 中使用 2D 数组来遍历和比较整个文件,但它可能会变得乏味。有人有更简单的方法吗?

谢谢

最佳答案

这是一个使用位运算的聪明(快速)解决方案。它依赖于 a & b & ... & z 等于 a | 的事实。乙 | ... | z 当且仅当所有 a, b, ..., z 都相等。

# read first line:
chomp( $_ = <> );
my $join = my $meet = $_;

# read other lines:
while( <> ) {
    chomp;
    $join |= $_;
    $meet &= $_;
}

# print matching columns:
foreach my $i ( 0 .. length($meet) - 1 ) {
    my $a = substr $join, $i, 1;
    my $b = substr $meet, $i, 1;
    print "$i: $a\n" if $a eq $b;
}

测试输入:

abcdefg
avcddeg
acbdeeg

输出:

0: a
3: d
6: g

附言。即使线条的长度不同,此解决方案也有效;最短行末尾之外的所有列都不会被视为匹配。

关于perl - 将一行中某个位置的字符与同一位置的其余行进行比较的简单方法(Perl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8886475/

相关文章:

linux - 使用 perl 检查 Linux 中的目录是否存在

perl - 使用严格/不严格的括号代码部分?

与 PostgreSQL 的 Perl DBI 连接不会因数据库错误而终止()

perl - 使用 CTRL + C 终止当前的 LWP 请求

python - python中的近似比较

c++ - 补偿 double/float 不准确

javascript - 如何在 Ckeditor 的光标位置放置一个 html 元素?

python - 是否可以在 python 中使 Instance == string/int/float 或任何数据类型为 True ?

html - 如何使用 html 在 iframe 中定位图像?

css - 背景图片的 div 位置