Почему Perl жалуется на my, если в строке его нет?

У меня есть код, который пытается вызвать функцию несколько раз, учитывая список. У меня есть цикл for(), а затем внутри цикла я вызываю функцию. Однако в строке с вызовом функции я получаю странную ошибку:

[Thu Aug  8 08:31:37 2013] x.cgi: "my" variable $_ masks earlier declaration in same statement at /usr/home/x/public_html/cgi-bin/x.cgi line 310.
[Thu Aug  8 08:31:37 2013] x.cgi: "my" variable $_ masks earlier declaration in same statement at /usr/home/x/public_html/cgi-bin/x.cgi line 310.

Ошибка странная, потому что в строке вообще нет my.

Вот мой код, запустите с Perl 5.

sub cgiPrintForm {
    my $fh = shift;
    for (qw!betatest subscribe fname lname position department company address1 address2 city province postalcode country phone fax email hearofus comments!)
    {
      print $fh "\n$_: ",param($_) if defined(param($_));
    }
    print $fh
      "\nReferer: ",referer(),
      "\nRemote Host: ",remote_host(),
      "\nRemote IP: ",remote_addr(),
      "\nRemote Ident: ",remote_ident(),
      "\nUser Agent: ",user_agent(),"\n";
}

Очевидно, какая-то магия Perl пошла не так, и автоматический my сбивает меня с толку.


person AnotherParker    schedule 08.08.2013    source источник
comment
используйте strict и warnings   -  person hwnd    schedule 08.08.2013
comment
Ваш фрагмент кода компилируется нормально (даже в строгом режиме). Это сообщение об ошибке часто указывает на то, что вы забыли поставить точку с запятой задолго до строки, в которой произошла ошибка. Я бы посмотрел непосредственно перед этим подопределением на наличие возможных ошибок.   -  person amon    schedule 08.08.2013
comment
@amon это было так, спасибо   -  person AnotherParker    schedule 07.12.2017


Ответы (1)


Это сообщение об ошибке часто указывает на то, что вы забыли поставить точку с запятой задолго до строки, в которой произошла ошибка. Я бы посмотрел непосредственно перед этим подопределением на наличие возможных ошибок. – amon 08 авг.

Комментарий @amon был правильным; У меня была ошибка в другом разделе, которая не была обнаружена до этого момента (это была отсутствующая кавычка, фигурные скобки или что-то в этом роде).

person AnotherParker    schedule 06.12.2017