arrays - 在 Perl 中逐行比较两个字符串

标签 arrays string perl

我正在寻找类似的 Perl 代码

my @lines1 = split /\n/, $str1;
my @lines2 = split /\n/, $str2;

for (int $i=0; $i<lines1.length; $i++)
{
  if (lines1[$i] ~= lines2[$i])
    print "difference in line $i \n";
}

逐行比较两个字符串并显示有差异的行。

我知道我写的东西是C/Perl/伪代码的混合体。我如何以在 Perl 上运行的方式编写它?

最佳答案

您所写的内容是可以的,只是您不能在 Perl 中使用该表示法 lines1.length , int $i ,和~=不是运算符,您的意思是 =~ ,但这是错误的工具。另外if必须有一个 block { }之后。

你想要的只是$i < @lines1要获取数组大小,my $i声明一个词法变量,并且 eq用于字符串比较。连同 if ( ... ) { ... } .

从技术上讲,您可以使用绑定(bind)运算符来执行字符串比较,例如:

"foo" =~ "foobar"

但是在比较文字字符串时这不是一个好主意,因为您可以获得部分匹配,并且需要转义元字符。因此,使用 eq 更容易.

使用 C 风格的 for 循环是有效的,但更 Perl 风格的方法是使用此表示法:

for my $i (0 .. $#lines1)

它将在 0 到数组的最大索引范围内进行迭代。

关于arrays - 在 Perl 中逐行比较两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29589738/

相关文章:

Javascript:数组、对象、排序和原型(prototype)?

arrays - 如何处理 Redux 中的列表项

swift - 为什么在没有格式正确的输入的情况下从 String 返回值的 Decimal?

javascript - 带有字符串对象的 jQuery 选择器不起作用

perl - 有效处理 lwp 超时

arrays - 在 Swift 中,如何根据另一个数组对一个数组进行排序?

java - 无法在 Java 中刷新 DataOutputStream

java - 如何有效地检查两个字符串是否相同并且其中没有一个为空

perl - Perl中的匿名哈希是什么?

perl - Intellij Perl5 添加 Perl5 解释器