Perl: "Plug&Play" (of zo iets)

Pagina: 1
Acties:

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 05:10
Dit is wat ik wil:

Een main file die in alle modules die in de directory aanwezig zijn functie met vaste naam uitvoert. Is dit mogelijk (of is het erg onduidelijk :?)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Waarom zou dat niet mogelijk zijn?

Het lijkt me dat je wel iets moet kunnen doen met het includen van die andere modules. Alleen krijg je misschien problemen met die functienamen.

Ik spreek geen perl, dus ik weet niet of je direct een functie kan aanroepen in een andere file. Je kunt natuurlijk wel altijd die andere file gewoon van de commandline starten.

Een directory listing is natuurlijk ook op te vragen. Klaar dus :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Rowwan
  • Registratie: November 2000
  • Laatst online: 05:10
OK, het werkt.. Ik gebruik de code:

Ik lees alle modules in in de huidige directory. En vervolgens:
code:
1
2
3
4
5
6
foreach $module (@modules)
{
    require $module;
    $module =~ s/\.pm//;    
    push @loaded_modules, $module;
}

Nu wil ik een functie 'extract()' aanroepen en hieraan een hash meegeven. Ik gebruik:
code:
1
2
3
4
foreach $loaded_module (@loaded_modules)
{   
    $loaded_module->extract(%lineElements);
}

In de functie zelf zijn nu alle keys en values omgedraaid!!! Als ik de functie op "compiletime" meelink, door het gebruik van 'use' ipv 'require. (wat dus uiteindelijk niet kan omdat de modules plug&play moeten zijn) gaat het wel goed..

Wat doe ik verkeerd? Is het een bug in Perl??

Verwijderd

code:
1
$loaded_module->extract(%lineElements);

Moet die '->' geen '::' zijn? De '->' is een hele andere operator.