-1

我使用 perl 制作扫描仪,但是当我尝试测试脚本时,我在某些引擎上得到了空白结果,没有给我结果,有人可以帮我检查在 perl 中写错行的脚本吗?

谢谢

sub google() {
my @list;
my $key = $_[0];
for (my $i=0; $i<=1000; $i+=100){
    my $search = ("http://www.google.com/search?q=".key($key)."&num=100&filter=0&start=".$i);
    my $res = search_engine_query($search);
    while ($res =~ m/<a href=\"?http:\/\/([^>\"]*)\//g) {
        my $link = $1;
        if ($link !~ /google/){
            my @grep = links($link);
            push(@list,@grep);
        }
    }
}
return @list;

}

sub search_engine() {
my (@total,@clean);
my $chan = $_[0];
my $bug = $_[1];
my $dork = $_[2];
my $engine = $_[3];
my $logo = $_[4];
if ($engine eq "GooGLe") { my @google = google($dork); push(@total,@google); }
if ($engine eq "AllTheWeb") { my @alltheweb = alltheweb($dork); push(@total,@alltheweb); }
if ($engine eq "Bing") { my @bing = bing($dork); push(@total,@bing); }
if ($engine eq "ALtaViSTa") { my @altavista = altavista($dork); push(@total,@altavista); }
if ($engine eq "AsK") { my @ask = ask($dork); push(@total,@ask); }
if ($engine eq "UoL") { my @uol = uol($dork); push(@total,@uol); }
if ($engine eq "YahOo") { my @yahoo = yahoo($dork); push(@total,@yahoo); }
@clean = clean(@total);
&msg("$chan","$logo(7@2$engine15)12 Total:4 (".scalar(@total).")12 Clean:4 (".scalar(@clean).")");
return @clean;

}

if ($engine =~ /google/i) {
    if (my $pid = fork) { waitpid($pid, 0); }
    else { if (fork) { exit; } else {
        &lfc($chan,$bug,$dork,"GooGLe");
    } exit; }
}

您可以在此处下载n0body 扫描仪。

4

1 回答 1

1

一方面,您正在为传递参数的函数使用零参数原型。不要那样做。

另一方面,当您对结果不满意时,您是否会检查响应?响应不是 200 吗?响应是否包含来自搜索引擎的错误消息?

仅基于这一行:

&msg("$chan",
"$logo(7@2$engine15)12 Total:4 (".scalar(@total).")12 Clean:4 (".scalar(@clean).")");

我还得出结论,您没有使用use strictand use warnings去做。

于 2013-07-12T21:35:46.280 回答