Schrift
[thread]10383[/thread]

Wo liegt das Modul?

Leser: 1


<< >> 9 Einträge, 1 Seite
pktm
 2007-09-13 13:01
#99400 #99400
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ärgerlich, ich hatte es schonmal gefragt, aber ich finde es nicht mehr.
Wie bekomme ich nochmal raus, wo ein Modul liegt? Es gehtr darum, dass relativ zur Position dieses Moduls Dateien liegen die ich gerne ansprechen würde.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
pq
 2007-09-13 13:17
#99401 #99401
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
pktm+2007-09-13 11:01:24--
Wie bekomme ich nochmal raus, wo ein Modul liegt? Es gehtr darum, dass relativ zur Position dieses Moduls Dateien liegen die ich gerne ansprechen würde.

bisschen genauer bitte. du willst rausfinden, "wo ein modul liegt"?
perldoc -l Modul::Name

du willst im skript den dateinamen eines moduls?
__FILE__

perldoc File::Spec
perldoc File::Basename
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pktm
 2007-09-13 13:35
#99403 #99403
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Na, wenn ich mir ein Modul.pm schreibe, dass ich z.B. unter /pfad/zu/Modul.pm speichere, dann will ich in diesem Modus wissen, wo das Modul liegt, also die Information /pfad/zu erhalten.
Denn, wenn ich in /pfad/zu/Ressources etwas abgelegt habe, wie in meinem Fall Bilder, die für das Programm benötigt werden, dann will ich da dran kommen.
Ich könnte da zwar absolute Pfadangaben nehmen, aber daas führt dann zu Schwierigkeiten, wenn ich das Modul samt Ordnerhierarchie von /pfad/zu nach /neu/pfad/zu verschiebe.
Es bringt mir auch nichts, das Verzeichnis auf Basis von FindBin zu berechnen, da das ja nur ein Modul ist, FindBin jedoch den Pfad der INstanz ausspuckt, die irgendwo anders liegen und das Modul in /pfad/zu benutzen kann.
http://www.intergastro-service.de (mein erstes CMS :) )
pq
 2007-09-13 13:58
#99407 #99407
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
na dann benutz doch __FILE__
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pktm
 2007-09-13 14:09
#99410 #99410
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
pq+2007-09-13 11:58:24--
na dann benutz doch __FILE__


Ja, schön, das funktioniert. Aber ist das nicht eine von diesen bösen Dingen die man nicht machen sollte wenn man ordentlich programmieren will? So wie die Verwendung von __LINE__ bei Fehlerausgaben mit Backtracking-Informationen?
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-09-13 14:13
#99412 #99412
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
__LINE__ ist vielleicht wirklich etwas unpraktisch (wenn auch nicht "böse"), aber es spricht nichts gegen __FILE__
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
moritz
 2007-09-13 14:56
#99417 #99417
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Wenn man es aus dem Skript heraus wissen will, dass das Modul eingebunden hat, hilft %INC.^
renee
 2007-09-13 15:11
#99420 #99420
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das kann man auch in dem Modul verwenden. %INC ist global...

Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

use strict;
use warnings;
use Win32::GuiTest;
use lib './perllib';
use Data::Dumper;

my @array = (1..3);
print Dumper \@array;


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
package Data::Dumper;

use Exporter;

our @ISA = qw(Exporter);
our @EXPORT = qw(Dumper);

sub Dumper{
    my ($arref) = @_;
    print "Element: $_\n" for @$arref;
    print $_,"\n" for keys %INC;
}


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
C:\>inc_push.pl
Element: 1
Element: 2
Element: 3
XSLoader.pm
re.pm
warnings/register.pm
ActiveState/Path.pm
Cwd.pm
warnings.pm
base.pm
File/Basename.pm
Config.pm
ActivePerl/Config.pm
Carp.pm
Win32/GuiTest/GuiTest.pc
strict.pm
Exporter.pm
vars.pm
constant.pm
Config_heavy.pl
AutoLoader.pm
Win32/GuiTest.pm
lib.pm
DynaLoader.pm
Data/Dumper.pm


Wie man sieht, sieht auch das Modul, welche Module im Hauptprogramm geladen wurden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2007-09-13 15:12
#99421 #99421
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wobei man sagen muss, dass beides nicht unbedingt absolute pfade sind.
hängt von @INC ab und vom cwd. muss man also ggfs. noch verknüpfen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 9 Einträge, 1 Seite



View all threads created 2007-09-13 13:01.