perl : not a CODE reference at ...

 ( iwanabeguru | 2012. február 28., kedd - 11:24 )

Hi all

Írtam egy perl scriptet ami egy logfájlból a felprefixelt bejegyzések alapján egy reportot épít.
A report bejegyzésekhez tartozhat alszekció amit úgy hozok létre, hogy a report bejegyzést készítő subroutinenak átadom az alszekciót legenráló subroutinet attól függően hogy milyen alszekcióra van szükség.

Ez a mai napig gyönyörűen ment is de ma reggel miután módosítottam az egyik alszekció generáló rutint elkezdett hibát dobni. Miután visszaálítottam a módosítás előtti állapotot akkor sem lett jó.

Hangsúlyozom ez működött már, de most nem.

a kód ide vágó része itt található: http://pastebin.com/eaRYKGnp

a hibaüzenet ennél a sornál jelentkezik:

$subFunction->("p","extendable",$params[4]);

a hibaüzenet pedig:

 
Not a CODE reference at ./InstallReportGenerator.pl line 211,  line 54046.

Van valakinek valami tippje hogy miért romlott el?

Köszönöm.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Blind shot:

\addSubSection helyett \&addSubSection ?

OMG :D Köszi , szerintem soha a büdös életbe nem vettem volna észre

A másik hihetetlen véletlen hogy pont azt a sort másoltam ki amiben el van írva :D

ty csak typo volt

Úgy látom, hogy use strict és warnings nélkül írtad meg az egészet, ami nem volt jó döntés.
Ha a warnings be lett volna kapcsolva, akkor már rég panaszkodott volna a bareword miatt.
A strict pedig nem hagyta volna, hogy ilyen - már elnézést - rosszul strukturált, csupa globális változót használó, átláthatatlan kódot írj.

szerk: az ilyen "visszaállítottam az eredetit, de így se jó" típusú hibajelenségek jellemzően abból fakadnak, hogy valójában mégsem az eredetit állítottad vissza. Ezért célszerű verziókezelőt használni még a relatíve kis projektekhez is: egyrészt tényleg vissza tudod állítani az eredetit, másrészt rákényszerít, hogy dokumentáld a módosításaidat, ezáltal arra is, hogy átgondoltabban, jobban programozz.