Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7793[/thread]

use Exporter

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
vayu
 2006-03-15 11:58
#63808 #63808
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Hallo ich habe folgendes Problem:

2 Verzeichnisse.

Das 1. mit ein paar *.pm
das 2. mit scripten, die die *.pms benutzen wollen.

mein aufrufendes skript sieht so aus

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

use strict;
use warnings;

use lib qw(pfad_zu_pm);
use local_config;
use start;

my $exit_val = &start_main($name, $abbrev);

return $exit_val;


local_config.pm sieht so aus:

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

package local_config;

use strict;
use warnings;

use Exporter();
@ISA = qw(Exporter);
@EXPORT = qw($name $abbrev);

$name="blafasel";
$abbrev="bla";


mein start.pm sieht folgendermassen aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl

package start;

use Exporter();
@ISA = qw(Exporter);
@EXPORT = qw(start_main);

use strict;
use warnings;

sub start_main {

 $name = shift;
 $abbrev = shift;

 open(FILE, "+>blatext.txt") or die $!;
 print FILE $name."\n";
 print FILE $abbrev."\n";
 close FILE;
}
1;


so jetzt kriege ich in der start_main den fehler

Use of uninitialised value in concatenation (.) or string at ...

bei den beiden print Aufrufen.

Was mache ich falsch beim exportieren?

Danke im voraus

vayu\n\n

<!--EDIT|vayu|1142416838-->
renee
 2006-03-15 12:20
#63809 #63809
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du übergibst ja deiner Methode nichts... Edit: Wer lesen kann ist klar im Vorteil...



So funktionierts:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
package ExporterTest;

use strict;
use warnings;
use Exporter;

our @ISA = qw(Exporter);
our @EXPORT = qw($name $test);

our $name = "Name";
our $test = "Test";


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

use strict;
use warnings;
use lib qw(./packages/);
use start;
use ExporterTest;

startsub($name,$test);


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
package start;

use strict;
use warnings;
use Exporter;

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

sub startsub{
my ($m,$n) = @_;
print $m," ",$n;
}
\n\n

<!--EDIT|renee|1142418745-->
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/
vayu
 2006-03-15 12:26
#63810 #63810
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ah damn it ... das vermaledeite our ... dank dir renee!


das our ist aber nur notwendig, wenn ich vorhabe variablen zu exportieren oder? weil die methode, die ich exportiere start_main() wird ja gefunden.\n\n

<!--EDIT|vayu|1142418475-->
renee
 2006-03-15 12:39
#63811 #63811
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das our ist notwendig wenn Du vorhast, die Variablen von "außerhalb" zu benutzen. Also auch ohne Exporter (z.B. mit einem $Package::Variable)...
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/
vayu
 2006-03-15 12:40
#63812 #63812
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
achso, und wenn ich die variablen die ich mit

our @EXPORT qw(...);

deklariert habe exportiere, sind sie quasi durch das our EXPORT auch als our deklariert und ich kann sie somit auch von aussen benutzen.
renee
 2006-03-15 12:49
#63813 #63813
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du musst jede Variable, die Du von außen benutzen willst (egal ob mit Exporter oder auf anderem Wege) mit our deklarieren!

Der Exporter hat mit der Deklaration nix zu tun! Der Exporter ist nur dafür da, Deine Variablen in das importierende Skript/Package zu bringen...
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/
vayu
 2006-03-15 12:54
#63814 #63814
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
hast du deinen ersten post editiert? war der meinung dass du im ersten codesnippet die 2 variablen mit my deklariert hattest :) deswegen fragte ich.
renee
 2006-03-15 13:02
#63815 #63815
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja, habe ich editiert (steht auch unter dem Post ;) )...
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/
esskar
 2006-03-15 13:03
#63816 #63816
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
für solche @ISA, @EXPORT, ... benutz ich immer use vars
Code: (dl )
use vars qw[@ISA @EXPORT];


our gefällt mir nicht immer ... geschmackssache
vayu
 2006-03-15 13:21
#63817 #63817
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
[quote=renee,15.03.2006, 12:02]ja, habe ich editiert (steht auch unter dem Post ;) )...[/quote]
ich meinte auch eher, ob du genau die stelle editiert hast :P

weil dasss du es hast steht ja unter dem post :D
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2006-03-15 11:58.