Защо 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 8 авг. '13 в 14:23

Коментарът на @amon беше правилен; Имах грешка в друга секция, която не беше открита до този момент (липсваше кавичка или скоби или нещо подобно).

person AnotherParker    schedule 06.12.2017