Код пальца в Perl - не в состоянии выполнить - PullRequest
1 голос
/ 28 октября 2010

Ошибка:

Синтаксическая ошибка: неожиданный конец файла

Ниже приведен код

Я изменился.

"#!/usr/local/bin/perl"

Фактическая программа

#!/local/perl5/bin/perl5.003

use Socket;

$sockaddr = 'S n a4 x8';

$host = $ARGV[0];
$them = $host;
$port = 79;
print "Finger $host: \n";
$hostname = ``;
`nslookup $host |grep Name:  >> $test`;
print $test;
#($name, $aliases, $proto) = getprotobyname('tcp');

($name, $aliases, $port) = getservbyname($port, 'tcp') unless $port =~ /^\d+$/;
($name, $aliases, $type, $len, $thisaddr) = gethostbyname($hostname);
$n1 = $name;
($name, $aliases, $type, $len, $thataddr) = gethostbyname($them);

$this = pack($sockaddr, &AF_INET, 0, $thisaddr);
$that = pack($sockaddr, &AF_INET, $port, $thataddr);

socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $!";

bind(S, $this) || die "bind: $!";
connect(S, $that);

select(S); $| = 1; select(stdout);

print S "\n\n";

while (<S>) {print $_;};

1 Ответ

2 голосов
/ 28 октября 2010

Здесь:

`nslookup $host |grep Name:  >> $test`;

$test не определено в этой точке, поэтому вы просите оболочку выполнить nslookup whatever.com |grep Name: >>. Куда оболочка должна перенаправить вывод?

Если вы установите $test как что-то, например, имя файла .. или даже $test = "$host.txt";, это продвинет вас дальше.

Ничего общего с вашей версией Perl, хотя возможность use strict;use warnings помогает, так как она бы поймала вышеуказанную ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...