perl - 二分搜索 - 在使用严格引用时不能使用字符串 "1"作为符号引用

标签 perl binary-search

我一直在浏览有关此错误消息的已回答问题。

我正在尝试解决 Rosalind web site 中的问题使用二分搜索查找一些索引。

当我的子例程找到该数字时,它似乎会忽略它,如果我尝试打印 $found 变量,它会给我错误

Can't use string "1" as a symbol ref while strict refs is in use

代码是这样的

sub binarysearch
{
  my $numbertolook = shift;
  my @intarray=@_;
  my $lengthint = scalar @intarray;
  my @sorted = sort {$a <=> $b} @intarray;
  #print $numbertolook, " " , @sorted, "\n";
  my $low=0;
  my $high=$lengthint-1;
  my $found =undef;
  my $midpoint;
     while ($low<$high)
     {
     $midpoint=int(($low+$high)/2);
     #print $midpoint, " ",$low," ", $high, " ", @sorted, "\n";
        if ($numbertolook<$sorted[$midpoint])
        {
            $high=$midpoint;
        }
        elsif ($numbertolook>$sorted[$midpoint])
        {
           $low=$midpoint;
        }
        elsif ($numbertolook==$sorted[$midpoint])
        {
           $found=1;
           print $found "\n";
           last;
        }
        if ($low==$high-1 and $low==$midpoint)
        {
            if ($numbertolook==$sorted[$high])
            {
                $found=1;
                print $found "\n";
                last;
            }
            $low=$high;
        }

     }

  return $found;

} 

最佳答案

你想要

print $found, "\n";

或者

print $found . "\n";

由于 $found 和换行符之间没有运算符,它认为 $found 是要打印换行符的文件句柄,并且会收到错误,因为它不是文件句柄。

关于perl - 二分搜索 - 在使用严格引用时不能使用字符串 "1"作为符号引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35830506/

相关文章:

algorithm - 如何在排序数组中找到一个元素,使得它之后的所有元素都大于给定值?

performance - 实现最速上升以优化概率

java - 入门 Java - 创建成功的二分搜索算法

perl - 如何根据扩展名过滤文件名?

algorithm - 二进制搜索边界

perl - perl +识别参数是否为ARG中的空值

perl - 如何从命令行覆盖 perl @INC

java - 如何对排序数组使用二分搜索来查找特定范围内的整数个数。 (重复)

java - RabbitMQ 与应用程序解耦

perl - 如何在 CGI 脚本中调用另一个 Perl CGI 脚本?