Autoloader

Autoloader is een PERL-module die Subroutines alleen op aanvraag kan laden.
Download nu

Autoloader Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • The Perl5-Porters
  • Uitgever website:
  • http://search.cpan.org/~smueller/AutoLoader-5.63/lib/AutoLoader.pm

Autoloader Tags


Autoloader Beschrijving

Autoloader is een PERL-module die Subroutines alleen op aanvraag kan laden. AutoLoader is een Perl module die subroutines alleen demand.SYNOPSIS pakket Foo kan laden; gebruik AutoLoader 'AUTOLOAD'; # Importeren de standaard AUTOLOAD subroutine pakket Bar; Gebruik AutoLoader; # Niet importeren AUTOLOAD, bepalen onze eigen sub AUTOLOAD {... $ AutoLoader :: AUTOLOAD = "..."; goto AutoLoader :: AUTOLOAD; } De AutoLoader module werkt met de AutoSplit module en de __END__ token uit te stellen het laden van een aantal subroutines totdat ze eerder worden gebruikt dan laden ze allemaal in once.To gebruik AutoLoader, de auteur van een module om de definities van subroutines Place To Be autoloaded na een __END__ token. (Zie perldata.) De AutoSplit module kan dan handmatig worden uitgevoerd om de definities in afzonderlijke bestanden auto / funcname.al.AutoLoader implementeert een AUTOLOAD subroutine te halen. Wanneer een ongedefinieerde subroutine wordt in een klantenstandaarddeel van AutoLoader, AutoLoader's AUTOLOAD subroutine pogingen om de subroutine vinden in een bestand met een naam met betrekking tot de locatie van het bestand waaruit de client module werd afgelezen. Als voorbeeld, als POSIX.pm ligt in /usr/local/lib/perl5/POSIX.pm, zal AutoLoader op zoek naar perl subroutines POSIX in /usr/local/lib/perl5/auto/POSIX/*.al waar de .al bestand heeft dezelfde naam als het subprogramma, sans-pakket. Als zo'n bestand bestaat, wordt AUTOLOAD lezen en evalueren, dus (waarschijnlijk) die de benodigde subroutine. AUTOLOAD dan goto het nieuw gedefinieerde subroutine.Once dit proces voltooit voor een bepaalde functie, wordt bepaald, zodat toekomstige oproepen naar de subroutine zal de bypass AUTOLOAD mechanism.Subroutine StubsIn zodat methodobject opzoeken en / of prototype controle te kunnen bedienen, zelfs bij werkwijzen nog niet zijn gedefinieerd moet worden "forward declare" elke subroutine (zoals in sub NAME;). Zie "SYNOPSIS" in perlsub. Dergelijke forward verklaring creëert "subroutine stubs", die plaatshouders zonder code.The AutoSplit en AutoLoader modules automatiseren het creëren van voorwaartse verklaringen. De AutoSplit module zorgt voor een 'index' bestand met forward verklaringen van alle AutoSplit subroutines. Wanneer de AutoLoader module 'use'd dat deze verklaringen laadt in zijn bellers package.Because van dit mechanisme is het belangrijk dat AutoLoader altijd wordt gebruikt en niet required.Using autoloader AUTOLOAD SubroutineIn om autoloader AUTOLOAD subroutine gebruiken, moet u expliciet importeren: gebruik AutoLoader 'AUTOLOAD'; Dwingende autoloader AUTOLOAD SubroutineSome modules, voornamelijk extensies, leveren hun eigen AUTOLOAD subroutines. Ze moeten meestal om voor een aantal bijzondere gevallen (bijvoorbeeld constanten) en vervolgens terugval naar AUTOLOAD AutoLoader voor de rest.Such modules niet AutoLoader's AUTOLOAD subroutine importeren. In plaats daarvan moeten zij hun eigen AUTOLOAD subroutines definiëren langs deze lijnen: gebruik AutoLoader; Gebruik Carp; sub AUTOLOAD {mijn $ sub = $ AUTOLOAD; (Mijn $ constname = $ sub) = ~ s /.* :: //; mijn $ val = constant ($ constname, @_ $ _ :? 0); if ($ = 0!) {if ($ = ~ / ongeldige / || $ {EINVAL}!) {$ AutoLoader :: AUTOLOAD = $ sub; goto AutoLoader :: AUTOLOAD; } Else {kwaken "Uw leverancier is niet gedefinieerd constant $ constname"; }} * $ Sub = sub {$ val}; # Hetzelfde als: eval "sub $ sub {$ val}"; goto $ sub; } Als elke module zijn eigen AUTOLOAD subroutine heeft geen behoefte om Terugvallen op de autoloader AUTOLOAD subroutine (omdat het geen AutoSplit subroutines hebben), dan is dat de module mag niet gebruikt worden AutoLoader op all.Package LexicalsPackage lexicals gedeclareerd met my in de belangrijkste blok een verpakking die gebruikmaakt AutoLoader niet zichtbaar voor automatisch beladen subroutines, vanwege het feit dat het gegeven bereik eindigt op __END__ marker. Een module met behulp van variabelen zoals pakket globals zal niet goed werken onder de AutoLoader.The pragma vars (zie "vars" in perlmod) kan worden gebruikt in dergelijke situaties als een alternatief voor expliciet kwalificatie alle globals met het pakket namespace. Variabelen vooraf verklaarde deze pragma zichtbaar één autoloaded routines (maar niet onzichtbaar worden buiten de verpakking, helaas) .Niet gebruik AutoLoaderYou kan stoppen met AutoLoader door eenvoudigweg geen AutoLoader; AutoLoader vs. SelfLoaderThe AutoLoader is vergelijkbaar doel SelfLoader : zowel vertraging het laden van subroutines.SelfLoader maakt gebruik van de __DATA__ marker in plaats van __END__. Hoewel dit vermijdt het gebruik van een hiërarchie van schijf bestanden en de bijbehorende open / dicht voor elke routine geladen, SelfLoader lijdt aan een opstart snelheid nadeel in de eenmalige interpreteren van de regels na __DATA__, waarna routines worden gecached. SelfLoader kan ook overweg met meerdere pakketten in een file.AutoLoader leest alleen code als daarom wordt gevraagd, en in veel gevallen zouden sneller moeten verlopen, maar vereist een mechanisme zoals AutoSplit worden gebruikt om de individuele bestanden te maken. ExtUtils :: MakeMaker zal AutoSplit automatisch te beroepen, indien AutoLoader wordt gebruikt in een module bronbestand. Vereisten: · Perl


Autoloader Gerelateerde software

Sux

Sux is een reeks krachtige hulpprogramma's van basis- en geavanceerde beknopte gegevensstructuren in C ++ en Java. ...

249

Downloaden