Perl如果等于符号

1 perl equals-operator

我需要检测文件中的第一个字符是否为等号(=)并显示行号.我该怎么写这个if陈述?

$i=0;

while (<INPUT>)  {
    my($line) = $_;
    chomp($line);
    $findChar = substr $_, 0, 1;    

    if($findChar == "=")
    $output = "$i\n";

    print OUTPUT $output;
    $i++;
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*son 10

惯用perl将使用正则表达式(^意思是行的开头)加上一个可怕的内置变量,这些变量恰好意味着"文件行":

while (<INPUT>) {
    print "$.\n" if /^=/;
}
Run Code Online (Sandbox Code Playgroud)

另见perldoc -v'$.'


cdh*_*wie 8

使用$findChar eq "=".在Perl中:

  • ==并且!=是数字比较.他们会将两个操作数转换为数字.
  • eq并且ne是字符串比较.他们会将两个操作数转换为字符串.

是的,这很令人困惑.是的,我还是写==我的意思是eq 所有的时间.是的,我也永远发现自己的错误.

  • 我不明白你的逻辑:你说'警告'没用.然而,它会告诉你一个错误,你说你一直****.而且,不,"eq"和"=="之间的区别并不令人困惑.你愿意Perl有`strcmp`,`strncasecmp`等吗? (7认同)