Thread Subroutine new() redefined (15 answers)
Opened by pktm at 2008-05-23 21:00

pktm
 2008-05-24 19:29
#110233 #110233
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
pq+2008-05-24 10:01:28--
subroutine redefined heisst, dass du im selben package zweimal die gleiche subroutine
erstellst. du hast die fehlermeldung und die zeile. welches package hat TreebankViewer.pm?
welches package hat DataSource.pm?
du musst nicht gleich das ganze modul posten, es reicht ja wohl, wenn du alles ausser den
new-methoden rauswirfst, oder uns einfach die relevanten infos mitteilst.


Also, TreebankViewer.pm hat den Namensraum TreebankViewer, und DataSource.pm TreebankViewer::DataSource. Der Fehler verschwindet - wie ich mittlerweile festgestellt habe - wenn ich in DataSource.pm die Zeile use base qw/TreebankViewer/; auskommentiere.

Hier mal die new-Methode aus TreebankViewer.pm:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
=head2 new( $class? )

Parse configuration, connect to data source, setup gui.

=cut

sub new {
my $class = shift;
my $self = {};

bless ($self, $class);

$self->{cfg} = Config::Auto::parse('baueBaumBottomUp.config');
$self->dbx( TreebankViewer::DataSource->new($self->{cfg}->{meinXml_vorselektiert}) );
$self->{gui} = $self->_tkInit();

return $self;
} # /new


Und hier die Methode new() aus DataSource.pm:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
=head2 new( $class, $dsn )

$dsn = die XML-Datei, die geladen werden soll.

=cut

sub new {
my $class = shift;
my $dsn = shift or croak("missing dsn");

my $self = {};
bless ($self, $class);
$self->dsn($dsn);

return $self;
} # /new


Quote
oder uns einfach die relevanten infos mitteilst


Der ist gut ;-)

Ich glaube, ich habe einfach mal Kapselung mit Verwerbung durcheinander geworfen.
DataSource.pm ist ein Bestandteil von TreebankViewer.pm, den ich aber zwecks besserer Übversicht ausgelagert habe.
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Subroutine new() redefined