/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Dynamisk brug af USE?
Fra : Thomas Rokamp


Dato : 27-11-00 11:19

Hejsa!

Jeg har en række perlscripts, som jeg efterhånden har mange versioner af.
Dem vil jeg gerne organisere lidt bedre, så jeg ikke skal rette i alle
filerne hver gang jeg ændrer version. Jeg inkluderer 2-3 filer i hvert
script. Det er dem der skifter version :

#!/usr/bin/perl --

use XX::1_0::module1;
use XX::1_0::module2;



I en senere version serdet så således ud :

#!/usr/bin/perl --

use XXX::1_2::module1;
use XXX::1_2::module2;



Kan man lave noget halløj, så jeg ikke skal ændre 1_0 til 1_2 i alle mine
scripts hver gang?

Fx. noget med

$version = "1_2";
use XX::$version::module1;
use XX::$version::module2;


(ovenstående virker ikke, men kunne man lave noget lignende?)

Mh.
Thomas Rokamp



 
 
Thorbjørn Ravn Ander~ (27-11-2000)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 27-11-00 11:55

Thomas Rokamp wrote:
>
> Hejsa!
>
> Jeg har en række perlscripts, som jeg efterhånden har mange versioner af.
> Dem vil jeg gerne organisere lidt bedre, så jeg ikke skal rette i alle
> filerne hver gang jeg ændrer version. Jeg inkluderer 2-3 filer i hvert
> script. Det er dem der skifter version :
>
> #!/usr/bin/perl --
>
> use XX::1_0::module1;
> use XX::1_0::module2;
>
> I en senere version serdet så således ud :
>
> #!/usr/bin/perl --
>
> use XXX::1_2::module1;
> use XXX::1_2::module2;
>
> Kan man lave noget halløj, så jeg ikke skal ændre 1_0 til 1_2 i alle mine
> scripts hver gang?
>
> Fx. noget med
>
> $version = "1_2";
> use XX::$version::module1;
> use XX::$version::module2;
>
> (ovenstående virker ikke, men kunne man lave noget lignende?)

Du kunne enten lade XX::Release pege på XX::seneste_version i
filsystemet, eller benytte et eksternt filversionssystem til at lave
backup med i stedet (hvis det er derfor du har mange versioner).

Nøgleord kunne være CVS eller MS SourceSAfe afhænggigt af platform og
vaner.

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Lasse Hillerøe Peter~ (27-11-2000)
Kommentar
Fra : Lasse Hillerøe Peter~


Dato : 27-11-00 17:16

In article <8vtce4$50f$1@news.inet.tele.dk>, "Thomas Rokamp"
<crax@mail.com> wrote:

>$version = "1_2";
>use XX::$version::module1;
>use XX::$version::module2;
>
>
>(ovenstående virker ikke, men kunne man lave noget lignende?)

Det vil nok være enklere at bruge andre løsninger som Thorbørn foreslår.

Men det kan gøres (næsten) som du beskriver.

Perldoc siger om use:

It is exactly equivalent to

BEGIN { require Module; import Module LIST; }

except that Module must be a bareword.

Det sidste er relevant fordi require blot kræver et EXPR. Så du kan bare
skrive dine use sætninger om til BEGIN blokke med require.

BEGIN{
$version = "1_2";
require "sti_til_XX/$version/module1.pm";
require "sti_til_XX/$version/module2.pm";
}

(Plus passende import.)

Hvis argumentet til require ikke er et bareword (med ::) så skal det være
et stinavn til den .pm fil du skal bruge. En anelse mere besværligt.

(NB. Dette er checket med MacPerl, jeg ved ikke om det er anderledes i 5.6.)


-Lasse

Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste